关于r:如何将`$`应用于列表

How to lapply `$` to a list

本问题已经有最佳答案,请猛点这里访问。

我有一个列表列表,每个子列表都有几十个元素,我只想提取其中一个。

1
x = list(`1` = list(a=1,b=2),`2` = list(a=3,b=4))

有很多方法可以做到这一点,但是我想变得尽可能聪明,所以我尝试

1
2
3
4
5
6
lapply(x,`$`,"b")
# $`1`
# NULL
#
# $`2`
# NULL

但尽管事实

1
2
`$`(x[[1]],"b")
# [1] 2

mapply的工作原理如下:

1
2
3
mapply(`$`,x,MoreArgs=list(name="b"))
# 1 2
# 2 4

我可以这样使用lapply

1
2
3
4
5
6
 lapply(x,getElement,"b")
 # $`1`
 # [1] 2
 #
 # $`2`
 # [1] 4

但是lapply为什么不能与$一起使用呢?


您可以尝试

lapply(x,'[[',"b")

1
2
3
4
5
$`1`
[1] 2

$`2`
[1] 4