这篇文章基于这个问题:(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=
参数时表现不同。