在R中:如何提取列表的一部分

在R中:如何提取列表的一部分,r,R,假设我有一个列表变量rho,如下所示 $rs6139074 V4 V5 V7 4 0.9 0.0 0.1 5 0.0 0.9 0.0 7 0.1 0.0 0.9 $rs6139072 V4 V5 V7 4 0.9 0.0 0.1 5 0.0 0.8 0.0 7 0.1 0.0 0.9 如何提取每个列表的前2×2矩阵,如下所示 $rs6139074 V4 V5 4 0.9 0.0 5 0.0 0.9 $rs6139072

假设我有一个列表变量
rho
,如下所示

$rs6139074
   V4  V5  V7
4 0.9 0.0 0.1
5 0.0 0.9 0.0
7 0.1 0.0 0.9

$rs6139072
   V4  V5  V7
4 0.9 0.0 0.1
5 0.0 0.8 0.0
7 0.1 0.0 0.9
如何提取每个列表的前2×2矩阵,如下所示

$rs6139074
       V4  V5
    4 0.9 0.0 
    5 0.0 0.9 

$rs6139072
       V4  V5  
    4 0.9 0.0 
    5 0.0 0.8 
我们的目标是这样做

lappy(rho[1:2,1:2],function(x) eigen(x)$values)
数据结构:
rho您可以使用
lappy
循环变量和
子集

lapply(rho, function(mat) mat[1:2, 1:2])
其中:

$rs6139074
   V4  V5
4 0.9 0.0
5 0.0 0.9

$rs6139072
   V4  V5
4 0.9 0.0
5 0.0 0.8

我们可以使用
sapply
simplify=FALSE

sapply(rho, function(mat) mat[1:2, 1:2], simplify = FALSE)
#$rs6139074
#   V4  V5
#4 0.9 0.0
#5 0.0 0.9

#$rs6139072
#   V4  V5
#4 0.9 0.0
#5 0.0 0.8

你是说像这样的事吗
lappy(rho,function(mat)eigen(mat[1:2,1:2])$values)
如果你真的想压扁它,你可以
lappy(rho,`[`,1:2,1:2)
`
只是为任何子集调用的标准提取函数,因此
df[1:2,1:2]
相当于
`[`(df,1:2,1:2)
@thelatemail。我在谷歌上搜索了一下。但是我无法使用更多关于
[
的信息。你能给我发个链接吗?
sapply(rho, function(mat) mat[1:2, 1:2], simplify = FALSE)
#$rs6139074
#   V4  V5
#4 0.9 0.0
#5 0.0 0.9

#$rs6139072
#   V4  V5
#4 0.9 0.0
#5 0.0 0.8