如何在R中获取列表的单独元素?
我构建了我的函数(既长又复杂)。我的函数的输出是两个列表的列表。为了澄清我的问题,我构建了一个与我的函数类似的简单示例如何在R中获取列表的单独元素?,r,R,我构建了我的函数(既长又复杂)。我的函数的输出是两个列表的列表。为了澄清我的问题,我构建了一个与我的函数类似的简单示例 my_func <- function(x,y){ out1 <- list(x*y+2,x+y^2) out2 <- list(x^2+y-2,y-x^2) out <- list(out1,out2) return(out) } 但是,在我的原始函数中,我使用了以下代码来访问元素 > x[[1]][[1]]$par ##t
my_func <- function(x,y){
out1 <- list(x*y+2,x+y^2)
out2 <- list(x^2+y-2,y-x^2)
out <- list(out1,out2)
return(out)
}
但是,在我的原始函数中,我使用了以下代码来访问元素
> x[[1]][[1]]$par ##to get the first par (of list 1) of the first output list.
[,1] [,2] [,3] [,4] [,5]
[1,] 0.000000 0.000000 0.000000 0.000000 0
[2,] 2.545870 0.000000 0.000000 0.000000 0
[3,] 3.060626 2.879527 0.000000 0.000000 0
[4,] 2.015691 2.889324 2.967189 0.000000 0
[5,] 2.862635 2.511020 2.480592 1.781923 0
如何使用
lappy
函数访问第一个和第二个列表的所有$par
?有什么帮助吗?如果使用的索引是数字
,我们不需要引号。引号构成列表
,以检查与该字符匹配的名称。所以
lapply(x, `[[`, 2)
#[[1]]
#[1] 27 19 53
#[[2]]
#[1] 1 -5 -9
如果我们对子列表进行了命名,那么OP的方法就会起作用
x1 <- lapply(x, setNames, 1:2)
lapply(x1, `[[`, '2')
#[[1]]
#[1] 27 19 53
#[[2]]
#[1] 1 -5 -9
x1将'2'
更改为2
。我们是按数字索引而不是按字符索引进行子集划分的。如果您已经用字符向量命名了它,那么它应该可以工作,否则,非常感谢您的回答。是的,我的输出被命名了。这是我为lappy
和list学习的一个新东西
lapply(x, `[[`, 2)
#[[1]]
#[1] 27 19 53
#[[2]]
#[1] 1 -5 -9
x1 <- lapply(x, setNames, 1:2)
lapply(x1, `[[`, '2')
#[[1]]
#[1] 27 19 53
#[[2]]
#[1] 1 -5 -9