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

mt1*_*022 6 r subset lapply

这篇文章是基于这个问题:( 迭代列表以获得其名称的价值)

我会在这里重现它:

test_list <- list(list("name"="A","property"=1),
              list("name"="B","property"=2),
              list("name"="C","property"=3))
Run Code Online (Sandbox Code Playgroud)

最初的OP发现:

sapply(test_list, `$`, "property")
Run Code Online (Sandbox Code Playgroud)

只返回NULL值.如果使用[[jogo评论时,它会给出正确的结果:

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

[[2]]
NULL

[[3]]
NULL

> sapply(test_list, `[[`, "property")
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

这也行不通:

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

[[2]]
NULL

[[3]]
NULL
Run Code Online (Sandbox Code Playgroud)

然而,无论是$[[工作的一个单独的元素test_list:

> `$`(test_list[[1]], 'property')
[1] 1
> `[[`(test_list[[1]], 'property')
[1] 1
Run Code Online (Sandbox Code Playgroud)

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