使用grep和lapply时出现意外行为

时间:2015-05-01 02:23:09

标签: r grep

R如何找到(grep)"你好"在列表的第一和第二个元素?不在lapply中使用直接功能时。

test_list <- list(c("",""),"",c("hello","goodbye"),c("hello"))
lapply(test_list,grep,"hello")

[[1]]
[1] 1

[[2]]
[1] 1

[[3]]
[1] 1

[[4]]
[1] 1

使用函数表示法键入它似乎返回了人们期望的内容:

lapply(test_list, function(x) grep("hello",x))
[[1]]
integer(0)

[[2]]
integer(0)

[[3]]
[1] 1

[[4]]
[1] 1

创造结果的两者之间有什么区别?

1 个答案:

答案 0 :(得分:2)

请记住:

  1. grep期望它的第一个参数是要搜索的字符串(不是要在其中搜索的字符串)。
  2. lapply传递vector / list的每个元素进行迭代,作为所提供函数的第一个参数。