为什么`$`在作为FUN参数传递给sapply / lapply时未能将列表元素子集化,而`[[`有效?

时间:2018-05-24 13:54:36

标签: r subset lapply

这篇文章基于这个问题:(Iterate over list to get value by its name

我将在此重现:

test_list <- list(list("name"="A","property"=1),
              list("name"="B","property"=2),
              list("name"="C","property"=3))

最初的OP发现:

sapply(test_list, `$`, "property")

仅返回NULL个值。如果使用[[代替jogo评论时,它会给出正确的结果:

> sapply(test_list, `$`, "property")
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

> sapply(test_list, `[[`, "property")
[1] 1 2 3

这也不起作用:

> sapply(test_list, function(x, y) `$`(x, y), y = "property")
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

但是,$[[都适用于test_list的单个元素:

> `$`(test_list[[1]], 'property')
[1] 1
> `[[`(test_list[[1]], 'property')
[1] 1

我想知道为什么$[[在用作lapply / sapply的FUN=参数时表现不同。

0 个答案:

没有答案