嵌套列表中的子集r

时间:2018-04-11 22:06:35

标签: r list nested subset

我有以下列表:

mylist<-list(c("25","0"),c("50","1"),c("100","2"))

我想立即提取列表中每个元素的第一个元素。那是

c(mylist[[1]][1],mylist[[2]][1],mylist[[3]][1])

我尝试了以下但没有成功:

mylist[[]][1]; mylist[[.]][1]; mylist[1:3][1]

我感谢任何有效执行此操作的建议

2 个答案:

答案 0 :(得分:1)

如果您希望它们作为原子矢量,您可以使用:

mylist <- list(c("25","0"),c("50","1"),c("100","2"))

sapply(mylist, function(v) v[1])
## [1] "25"  "50"  "100"

或者将它们作为列表:

lapply(mylist, function(v) v[1])
## [[1]]
## [1] "25"
## [[2]]
## [1] "50"
## [[3]]
## [1] "100"

答案 1 :(得分:1)

另一个lapply解决方案:

lapply(mylist,"[", 1)
[[1]]
[1] "25"

[[2]]
[1] "50"

[[3]]
[1] "100"

使用purrr,我们也可以这样做:

purrr::map(mylist, ~ .x[1])
[[1]]
[1] "25"

[[2]]
[1] "50"

[[3]]
[1] "100"

但是,lapply应该更快。