在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