data.table - 提取所有文本功能

时间:2017-11-03 14:30:38

标签: r data.table

作为功能的一部分,我尝试隔离characterfactor的所有功能。我的数据集是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会引发此错误 - 我应该如何更改代码以便以相同的方式工作以避免此错误?

注意:

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

由于

1 个答案:

答案 0 :(得分:2)

您获得的错误是因为当您对内部data.tables进行子集化时,您在错误的位置使用逗号。您需要列的子集,而不是行:

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