如何在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