我有一个名为G
的data.frames列表。
在BASE R中,我想知道如何分别提取dint
和{{中的元素SD
和A
1}}跳过任何B
元素?
我想要的输出是: NULL
以下是数据:
dint = list(A = 1:3, B = c(1:4, 5:6) )
SD = list(A = 0:2, B = c(2:5, 3:4) )
答案 0 :(得分:2)
我们可以只调用一个lapply
并提取组件
lapply(G, function(x) do.call(rbind, x)$dint)
#$A
#[1] 1 2 3
#$B
#[1] 1 2 3 4 5 6
或者提取“ SD”
lapply(G, function(x) do.call(rbind, x)$SD)
#$A
#[1] 0 1 2
#$B
#[1] 2 3 4 5 3 4
可以做成一个函数
f1 <- function(lstI, elementName){
lapply(lstI, function(x) do.call(rbind, x)[[elementName]])
}
f1(G, "dint")
f1(G, "SD")
rbind
将同时获得两列
lapply(G, function(x) do.call(rbind, x))
答案 1 :(得分:1)
我们可以使用嵌套的lapply
lapply(G, function(x) unlist(lapply(x, `[[`, 'dint'), use.names = FALSE))
#$A
#[1] 1 2 3
#$B
#[1] 1 2 3 4 5 6
,"SD"
也是如此
lapply(G, function(x) unlist(lapply(x, `[[`, 'SD'), use.names = FALSE))
#$A
#[1] 0 1 2
#$B
#[1] 2 3 4 5 3 4