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

または、これらのクエリを1つの正規表現に組み合わせることができます

grepl("^UN1705.* |^UN1706.* ", Trial_group)
于 2012-05-29T13:18:30.493 に答える
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を実行する方が高速であるように見えます。

于 2012-05-29T13:12:06.843 に答える