7

我正在尝试将数据集分成具有因子变量和非因子变量的部分。

我想做类似的事情:

这部分工作:

factorCols <- sapply(df1, is.factor)
factorDf <- df1[,factorCols]

这部分不起作用:

nonFactorCols <- sapply(df1, !is.factor)

由于此错误:

Error in !is.factor : invalid argument type

有没有正确的方法来做到这一点?

4

2 回答 2

10

正确方法:

nonFactorCols <- sapply(df1, function(col) !is.factor(col))
# or, more efficiently
nonFactorCols <- !sapply(df1, is.factor)
# or, even more efficiently
nonFactorCols <- !factorCols
于 2013-10-03T20:55:23.827 回答
8

约书亚给了你正确的方法。至于为什么 sapply(df1, !is.factor)没有工作:

sapply期待一个功能。 !is.factor不是函数。bang 运算符返回一个逻辑值(尽管它不能is.factor作为参数)。

或者,您可以使用Negate(is.factor)which does 实际上返回一个函数。

于 2013-10-03T21:01:44.850 回答