我正在尝试从庞大的数据集中提取子集。以下代码用于从数据集中提取单个数据点。
write.csv(subset(project, grepl("^UN1705.* ", Trial_group) ), file="kiki.csv")
如何告诉R我想提取多个数据点?我尝试过逗号,分号等,但没有任何效果:
write.csv(subset(project, grepl("^UN1705, UN1706.* ", Trial_group) ), file="kiki.csv")
答案 0 :(得分:2)
或者您可以将这些查询合并到一个正则表达式
中grepl("^UN1705.* |^UN1706.* ", Trial_group)
答案 1 :(得分:1)
要合并逻辑向量,请分别使用&
和|
进行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更快。