作为功能的一部分,我尝试隔离character
或factor
的所有功能。我的数据集是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’
由于
答案 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