1

我正在尝试从一个巨大的数据集中提取一个子集。以下代码用于从数据集中提取单个数据点。

   write.csv(subset(project, grepl("^UN1705.* ", Trial_group) ), file="kiki.csv")

如何告诉 R 我要提取多个数据点?我尝试了逗号、分号等,但没有任何效果:

  write.csv(subset(project, grepl("^UN1705, UN1706.* ", Trial_group) ), file="kiki.csv")
4

2 回答 2

2

或者您可以将这些查询组合到一个正则表达式中

grepl("^UN1705.* |^UN1706.* ", Trial_group)
于 2012-05-29T13:18:30.493 回答
1

要组合逻辑向量,请使用&and |, 分别表示 AND 和 OR。

grepl("^UN1705.* ", Trial_group) & grepl("^UN1706.* ", Trial_group)

只是为了好玩,基准!

Trial_group <- sample(letters,10^5,replace=TRUE)
library(microbenchmark)
microbenchmark(
  grepl("^b.*|^c.*", Trial_group) ,
  grepl("^b.*", Trial_group) | grepl("^c.*", Trial_group)
)

Unit: milliseconds
                                                     expr      min       lq   median       uq      max
1                         grepl("^b.*|^c.*", Trial_group) 15.25969 15.73327 15.95457 16.37784 18.89444
2 grepl("^b.*", Trial_group) | grepl("^c.*", Trial_group) 27.39136 28.18150 28.65988 29.47160 49.31859

看起来在正则表达式中执行逻辑 OR 更快。

于 2012-05-29T13:12:06.843 回答