【问题标题】:data.table - Extract all the text featuresdata.table - 提取所有文本特征
【发布时间】:2017-11-03 14:30:37
【问题描述】:

作为函数的一部分,我试图隔离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)) 中的错误: i 评估为逻辑向量长度 87 但有 12992 行。不再允许对逻辑 i 进行回收,因为它隐藏了比难得的便利更多的错误。如果确实需要回收,请显式使用 rep(...,length=.N)。

我了解此错误是由最新版本的 data.table 引发的 - 我应该如何更改我的代码以相同的方式工作以避免此错误?

注意:

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

谢谢

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    您遇到的错误是因为在对内部 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
    

    【讨论】:

    • 谢谢,这就是我要找的。事实上,我只是注意到我的函数之前配置为使用read.csv,所以这就是我混淆逗号的原因。我想我需要查看完整的功能才能为 data.table 工作 - 感谢您的支持。
    猜你喜欢
    • 2019-04-28
    • 2019-07-25
    • 2013-02-26
    • 2015-12-29
    • 2011-07-25
    • 2012-06-20
    • 2017-09-13
    • 2019-04-09
    • 2016-09-12
    相关资源
    最近更新 更多