alexwhan が言うように、grep
使用する機能です。ただし、リストで使用する場合は注意してください。それはあなたが思っていることをしていません。例えば:
grep("c", z)
[1] 1 2 3 # ?
grep(",", z)
[1] 1 2 3 # ???
舞台裏で起こっていることgrep
は、as.character
. リストに適用すると、逆解析によって取得されas.character
たリストの文字表現が返されます。(アンリストをモジュロします。)
as.character(z)
[1] "c(\"a\", \"b\", \"c\")" "c(\"b\", \"d\", \"e\")" "c(\"a\", \"e\", \"f\")"
cat(as.character(z))
c("a", "b", "c") c("b", "d", "e") c("a", "e", "f")
これがgrep
取り組んでいるものです。
grep
リストで実行したい場合、より安全な方法は を使用することlapply
です。これにより、別のリストが返されます。このリストを操作して、関心のあるものを抽出できます。
res <- lapply(z, function(ch) grep("a", ch))
res
[[1]]
[1] 1
[[2]]
integer(0)
[[3]]
[1] 1
# which vectors contain a search term
sapply(res, function(x) length(x) > 0)
[1] TRUE FALSE TRUE