我正在尝试将数据集分成具有因子变量和非因子变量的部分。
我想做类似的事情:
这部分工作:
factorCols <- sapply(df1, is.factor)
factorDf <- df1[,factorCols]
这部分不起作用:
nonFactorCols <- sapply(df1, !is.factor)
由于此错误:
Error in !is.factor : invalid argument type
有没有正确的方法来做到这一点?
正确方法:
nonFactorCols <- sapply(df1, function(col) !is.factor(col))
# or, more efficiently
nonFactorCols <- !sapply(df1, is.factor)
# or, even more efficiently
nonFactorCols <- !factorCols
约书亚给了你正确的方法。至于为什么 sapply(df1, !is.factor)
没有工作:
sapply
期待一个功能。 !is.factor
不是函数。bang 运算符返回一个逻辑值(尽管它不能is.factor
作为参数)。
或者,您可以使用Negate(is.factor)
which does 实际上返回一个函数。