【发布时间】:2020-11-14 10:42:04
【问题描述】:
我的目标是获取一个布尔值向量来指示 data.frame 中的每一列是否是一个因素,我在 sapply() 和 apply() 函数中使用了 is.factor(),看起来它们返回了不同的值,apply() 返回错误的值。谁能告诉我造成这种差异的原因是什么?
X <- data.frame(X1=c(1,2,3,4), ## numeric
X2=factor(paste0("f",c(1:4))) ## factor)
sapply(X, is.factor)
## FALSE TRUE
apply(X, 2, is.factor)
## FALSE FALSE // apparently this is wrong, the second value is supposed to be TRUE.
class()、is.numeric() 等其他函数也发生了同样的情况。
【问题讨论】:
-
apply将X更改为矩阵。建议不要将apply用于数据帧。 -
查看
apply(X, 2, function(x) x)的输出