访问R中列表列表的选定元素

访问R中列表列表的选定元素,r,R,我有一个这种类型的列表子游戏[[I]]$Weight: [[1]] [1] 0.4720550 0.4858826 0.4990469 0.5115899 0.5235512 0.5349672 0.5458720 [8] 0.5562970 0.5662715 0.5758226 0.5849754 0.5937532 0.6021778 0.6102692 [15] 0.6180462 0.6255260 0.6327250 0.6396582 0.6463397 0.6527826 [[

我有一个这种类型的列表
子游戏[[I]]$Weight

[[1]]
[1] 0.4720550 0.4858826 0.4990469 0.5115899 0.5235512 0.5349672 0.5458720
[8] 0.5562970 0.5662715 0.5758226 0.5849754 0.5937532 0.6021778 0.6102692
[15] 0.6180462 0.6255260 0.6327250 0.6396582 0.6463397 0.6527826

[[2]]
[1] 0.4639948 0.4779027 0.4911519 0.5037834 0.5158356 0.5273443 0.5383429
[8] 0.5488623 0.5589313 0.5685767 0.5778233 0.5866943 0.5952111 0.6033936
[15] 0.6112605 0.6188291 0.6261153 0.6331344 0.6399002 0.6464260

[[3]]
[1] 0.4629488 0.4768668 0.4901266 0.5027692 0.5148329 0.5263534 0.5373639
[8] 0.5478953 0.5579764 0.5676339 0.5768926 0.5857755 0.5943041 0.6024984
[15] 0.6103768 0.6179568 0.6252543 0.6322844 0.6390611 0.6455976
我想要的是访问每个列表的所有
j-th
元素。示例如果
j=1
我必须获得:

>0.4720550  0.4639948 0.4629488
我怎么做? 我发现

但对我来说太狡猾了。
有一种更优雅的方法吗?

如果
j=1
,那么你对
子游戏[[i]]$Weight[[1]][1]
子游戏[[i]]]$Weight[[2]][1]
子游戏[[i]]$Weight[[3]][1]
。换句话说,您希望在每个列表元素上使用
[1]

但是当你把一个向量子集时会发生什么呢?例如:

(x <- rnorm(5))
# [1] -1.8965529  0.4688618  0.6588774  0.2749539  0.1829046
x[3]
# [1] 0.6588774
请注意名称周围的反勾号。一个简单的
[
会抛出一个错误,所以你需要引用它。类似
+
的其他函数也是如此

因此,如果要获取每个列表元素的第一个元素,可以对列表的每个元素应用
[
,传递它
1
或任何
j
是什么:

sapply(subgame[[i]]$Weight, `[`, 1)

如果
j=1
,那么您对
子游戏[[i]]$Weight[[1]][1]
子游戏[[i]]$Weight[[2]]][1]
子游戏[[i]]]$Weight[[3]][1]
感兴趣。换句话说,您希望在每个列表元素上使用
[1]

但是当你将一个向量子集时会发生什么呢?例如:

(x <- rnorm(5))
# [1] -1.8965529  0.4688618  0.6588774  0.2749539  0.1829046
x[3]
# [1] 0.6588774
请注意名称周围的反勾号。一个空的
[
将抛出一个错误,因此您需要引用它。类似于
+
的其他函数也是如此

因此,如果要获取每个列表元素的第一个元素,可以对列表的每个元素应用
[
,传递它
1
或任何
j
是什么:

sapply(subgame[[i]]$Weight, `[`, 1)

如果
j=1
,那么您对
子游戏[[i]]$Weight[[1]][1]
子游戏[[i]]$Weight[[2]]][1]
子游戏[[i]]]$Weight[[3]][1]
感兴趣。换句话说,您希望在每个列表元素上使用
[1]

但是当你将一个向量子集时会发生什么呢?例如:

(x <- rnorm(5))
# [1] -1.8965529  0.4688618  0.6588774  0.2749539  0.1829046
x[3]
# [1] 0.6588774
请注意名称周围的反勾号。一个空的
[
将抛出一个错误,因此您需要引用它。类似于
+
的其他函数也是如此

因此,如果要获取每个列表元素的第一个元素,可以对列表的每个元素应用
[
,传递它
1
或任何
j
是什么:

sapply(subgame[[i]]$Weight, `[`, 1)

如果
j=1
,那么您对
子游戏[[i]]$Weight[[1]][1]
子游戏[[i]]$Weight[[2]]][1]
子游戏[[i]]]$Weight[[3]][1]
感兴趣。换句话说,您希望在每个列表元素上使用
[1]

但是当你将一个向量子集时会发生什么呢?例如:

(x <- rnorm(5))
# [1] -1.8965529  0.4688618  0.6588774  0.2749539  0.1829046
x[3]
# [1] 0.6588774
请注意名称周围的反勾号。一个空的
[
将抛出一个错误,因此您需要引用它。类似于
+
的其他函数也是如此

因此,如果要获取每个列表元素的第一个元素,可以对列表的每个元素应用
[
,传递它
1
或任何
j
是什么:

sapply(subgame[[i]]$Weight, `[`, 1)

我想添加一个解决方案,返回您想要的
子游戏
列表中每个元素的
权重
列表的结果

> subgame <- list(list(weight = list(c(1, 2), c(3, 4), c(5, 6))), list(weight = list(c(7, 8), c(9, 10), c(11, 12))))
> 
> j = 1
> 
> do.call(rbind, subgame[[1]]$weight)[,j]
[1] 1 3 5
>  
> lapply(subgame, function(x) {do.call(rbind, x$weight)[,j]})
[[1]]
[1] 1 3 5

[[2]]
[1]  7  9 11
>子游戏
>j=1
> 
>do.call(rbind,子游戏[[1]]$weight)[,j]
[1] 1 3 5
>  
>lappy(子游戏,函数(x){do.call(rbind,x$weight)[,j]})
[[1]]
[1] 1 3 5
[[2]]
[1]  7  9 11

我想添加一个解决方案,返回您想要的
子游戏
列表中每个元素的
权重
列表的结果

> subgame <- list(list(weight = list(c(1, 2), c(3, 4), c(5, 6))), list(weight = list(c(7, 8), c(9, 10), c(11, 12))))
> 
> j = 1
> 
> do.call(rbind, subgame[[1]]$weight)[,j]
[1] 1 3 5
>  
> lapply(subgame, function(x) {do.call(rbind, x$weight)[,j]})
[[1]]
[1] 1 3 5

[[2]]
[1]  7  9 11
>子游戏
>j=1
> 
>do.call(rbind,子游戏[[1]]$weight)[,j]
[1] 1 3 5
>  
>lappy(子游戏,函数(x){do.call(rbind,x$weight)[,j]})
[[1]]
[1] 1 3 5
[[2]]
[1]  7  9 11

我想添加一个解决方案,返回您想要的
子游戏
列表中每个元素的
权重
列表的结果

> subgame <- list(list(weight = list(c(1, 2), c(3, 4), c(5, 6))), list(weight = list(c(7, 8), c(9, 10), c(11, 12))))
> 
> j = 1
> 
> do.call(rbind, subgame[[1]]$weight)[,j]
[1] 1 3 5
>  
> lapply(subgame, function(x) {do.call(rbind, x$weight)[,j]})
[[1]]
[1] 1 3 5

[[2]]
[1]  7  9 11
>子游戏
>j=1
> 
>do.call(rbind,子游戏[[1]]$weight)[,j]
[1] 1 3 5
>  
>lappy(子游戏,函数(x){do.call(rbind,x$weight)[,j]})
[[1]]
[1] 1 3 5
[[2]]
[1]  7  9 11

我想添加一个解决方案,返回您想要的
子游戏
列表中每个元素的
权重
列表的结果

> subgame <- list(list(weight = list(c(1, 2), c(3, 4), c(5, 6))), list(weight = list(c(7, 8), c(9, 10), c(11, 12))))
> 
> j = 1
> 
> do.call(rbind, subgame[[1]]$weight)[,j]
[1] 1 3 5
>  
> lapply(subgame, function(x) {do.call(rbind, x$weight)[,j]})
[[1]]
[1] 1 3 5

[[2]]
[1]  7  9 11
>子游戏
>j=1
> 
>do.call(rbind,子游戏[[1]]$weight)[,j]
[1] 1 3 5
>  
>lappy(子游戏,函数(x){do.call(rbind,x$weight)[,j]})
[[1]]
[1] 1 3 5
[[2]]
[1]  7  9 11

你能更好地解释
[
运算符的含义吗?你能更好地解释
[
运算符的含义吗?你能更好地解释
[
运算符的含义吗?