gpt4 book ai didi

r - apply() 到 data.frame 的列

转载 作者:行者123 更新时间:2023-12-04 10:52:42 25 4
gpt4 key购买 nike

我不太明白 apply() 的行为在 data.frame 列的情况下:

apply(mtcars, 2, is.numeric)
# mpg cyl disp hp drat wt qsec vs am gear carb
# TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

apply(iris, 2, is.numeric)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE FALSE

在两个表中我们都有数字数据,那么为什么结果不同呢?
此外,如果我向 mtcars 添加一列,它会更改所有列的结果:
mtcars$colA <- 'charA'
apply(mtcars, 2, is.numeric)
# mpg cyl disp hp drat wt qsec vs am gear carb colA
# FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

出于我的目的(确定列的类型), lapply做这项工作( lapply(mtcars, is.numeric) ) - 但我仍然想弄清楚在 apply(df,2,myfunc) 的情况下发生了什么

最佳答案

来自 apply 的文档,

Details

If X is not an array but an object of a class with a non-null dim value (such as a data frame), apply attempts to coerce it to an array via as.matrix if it is two-dimensional (e.g., a data frame) or via as.array.


由于这些对象只能容纳一个类,那么您将得到所有都是数字的或如果至少有一个非数字列,那么您将得到 FALSE对所有人。我们可以将其与 sapply 的结果进行比较,
apply(iris, 2, is.numeric)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE FALSE

sapply(iris, is.numeric)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# TRUE TRUE TRUE TRUE FALSE

关于r - apply() 到 data.frame 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59392240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com