2017-11-03 5 views
0

関数の一部として、characterまたはfactorのすべての機能を分離しようとしています。私のデータセットはdata.tableです。data.table - すべてのテキスト機能を抽出する

text_features <- c(names(data_set[sapply(data_set, is.character)]), names(data_set[sapply(data_set, is.factor)])) 

私は私が言う例外メッセージを取得しています機能を実行すると:

エラー[.data.table(data_set、sapply(data_set、is.character))中:私は論理ベクトルに評価さ 長さは87ですが、12992行あります。論理的なiのリサイクルは、まれな利便性の価値よりも多くのバグを隠すので、もはや許されません。実際にリサイクルする必要がある場合は、rep(...、length = .N)を明示的に使用してください。

このエラーは、最近のバージョンdata.tableでスローされます。このエラーを回避するには、同じ方法でコードを変更する必要がありますか?

注:あなたがあなたの内data.tablesをサブセット化しているときに間違った場所にコンマを持っているので、あなたが取得している

packageVersion("data.table") 
[1] ‘1.10.4.3’ 

おかげ

答えて

2

エラーです。

data_set[sapply(data_set, is.character)] # subsetting rows 
data_set[,sapply(data_set, is.character), with = FALSE] # subsetting columns 

言ったことすべてが、私は非常にクリーンソリューションがあることだと思う:

text_cols <- names(data_set)[sapply(data_set, class) %in% c("character","factor")] 
data_set[, ..text_cols] # subset data 
+0

おかげで、これは私が探していたものであるあなたは、列ではなく、行のサブセットをしたいです。実際、 'read.csv'で動作するように私の関数が以前設定されていたことに気づいたので、カンマを混ぜたのです。私は 'data.table'のために働く全機能を見直す必要があると思います。あなたのサポートに感謝します。 – Michael

関連する問題