12/06/04 21:20:11.29
ミスがありました。>>553 は unlist しないと駄目でした。
target[sort(unique(unlist(sapply(pattern, function(x) grep(x, target)))))]
あと、greplを使えないかなと思い、>>555 氏の方法でランダム生成した
サイズ 10000 の target に対し、
target[apply(sapply(pattern,function(x)grepl(x,target)),1,any)]
を適用してみましたが、apply系の関数を2重に使うと、当たり前ですが
遅くなりますね。
> pattern <- c("ab","ef")
> target <- apply(matrix(sample(letters[1:6], 4 * 10000, replace = TRUE), ncol = 4), 1, paste, collapse = '')
> system.time(target[unique(unlist(sapply(1:length(pattern), function(i){grep(pattern[i], target)})))])
user system elapsed
0.01 0.00 0.02
> system.time(target[sort(unique(unlist(sapply(pattern, function(x) grep(x, target)))))])
user system elapsed
0.02 0.00 0.02
> system.time(target[apply(sapply(pattern,function(x)grepl(x,target)),1,any)])
user system elapsed
0.05 0.00 0.05