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 を使用することもできます。

于 2013-10-03T21:01:44.850 に答える