我有一个矩阵M
,我想创建 3 个列表,每个列表都包含矩阵的行名,M
这意味着对于第一个列表,我想要m[, 1]$a = 1
和m[ ,1]$b = 2
. 如何在 R 中为每一列执行此操作?
m
[,1] [,2] [,3]
a 1 3 5
b 2 4 6
我已经尝试过这段代码,但这不是我想要的结果
> list(m[, 1])
[[1]]
a b
1 2
我有一个矩阵M
,我想创建 3 个列表,每个列表都包含矩阵的行名,M
这意味着对于第一个列表,我想要m[, 1]$a = 1
和m[ ,1]$b = 2
. 如何在 R 中为每一列执行此操作?
m
[,1] [,2] [,3]
a 1 3 5
b 2 4 6
我已经尝试过这段代码,但这不是我想要的结果
> list(m[, 1])
[[1]]
a b
1 2
这将创建一个列表列表:
apply(M, 2, as.list)
如果你的矩阵有 colnames,那些甚至会被用作你的顶级列表的名称:
M <- matrix(1:6, nrow = 2, dimnames = list(c("a", "b"), c("c1", "c2", "c3")))
apply(M, 2, as.list)
# $c1
# $c1$a
# [1] 1
#
# $c1$b
# [1] 2
#
#
# $c2
# $c2$a
# [1] 3
#
# $c2$b
# [1] 4
#
#
# $c3
# $c3$a
# [1] 5
#
# $c3$b
# [1] 6
这是命令:
list.m <- as.list(m[,1])
尝试这个:
# input matrix
m <- matrix(1:6, 2, dimnames = list(c("a", "b"), NULL))
# convert it to a list constructed such that L[, 1]$a gives 1
L <- as.list(m)
dim(L) <- dim(m)
dimnames(L) <- dimnames(m)
现在我们有:
> L[, 1]$a
[1] 1