【问题标题】:Search for expression in data.table in R在 R 中的 data.table 中搜索表达式
【发布时间】:2014-01-26 21:19:10
【问题描述】:

我的 data.table 包含如下所示的数据:

 9:                                                   FIXED ASSETS
10:                c("Tangible assets", "2", "726,809", "729,029")
11:                c("Investments", "3", "2,020,888", "2,020,888")

给定搜索参数,我想提取 data.table 的整行:

search <- quote(ColName=="Tangible assets")
WholeRow <- subset(DT, eval(search))

否则,我已经尝试过了:

DT[ColName=="Tangible assets"]

其中 DT 是 data.frame 的名称,ColName 是列名。只有 1 列名为 ColName,所有数据都在哪里。

如何仅使用部分搜索参数提取整行?

【问题讨论】:

  • 您的数据格式似乎很奇怪。您有什么理由要保留它,还是先把它清理干净?
  • 是的,确实是奇怪的格式!说来话长。它来自于抓取某些文件。当然,我愿意接受清洁等,但这会让我解释“长篇故事”。没有人想要这个:)
  • 有可能在您的脚本中某处,您对list 进行了一次两次多次调用,例如:DT[i=.., j=list(list(..))]。可能值得一看。

标签: r data.table


【解决方案1】:

您的数据当前存储的方式,最好的选择是使用grepl,如:

 DT[grepl("Tangible assets", V1)]
 # where V1 is the name of the column you are searching through

【讨论】:

  • 谢谢。还有一件事。如何包含更多搜索参数。比如:c("Tangible assets","Investments")?
  • 我试过循环遍历一个列表("Tangible assets","Investments") 但有点乱。
  • 看看?Regex。最简单的选择是使用"|",如:grepl("Tangible assets|Monty Python|Holy Grail", V1)
猜你喜欢
  • 2020-06-20
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
相关资源
最近更新 更多