R中矩阵的行/列的向量化

km0tfn4u  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(109)

我希望能够在R中取一个矩阵,并使每行都是它自己的向量(理想情况下,在循环矩阵时,我可以迭代并分配一个名称)。例如,如果我有一个矩阵M:

> M<-matrix(c(1,-4,-4,3,4,-4,17,15,-12),3,3)
> M
     [,1] [,2] [,3]
[1,]    1    3   17
[2,]   -4    4   15
[3,]   -4   -4  -12

我希望能够遍历M并创建我可以命名的向量,以便我最终将每一行作为它自己的独立向量:

> row1<-M[1,];row2<-M[2,];row3<-M[3,];
> row1
[1]  1  3 17
> row2
[1] -4  4 15
> row3
[1]  -4  -4 -12

很明显我可以这样做,但是对于一个超过100行的矩阵来说,这是一场噩梦,我不知道如何迭代for循环,来允许我在变量名赋值在每次迭代时改变的情况下这样做,理想情况下我希望能够在一个有行名称的矩阵中这样做,然后我可以给每个向量分配变量名,这个变量名就是它在原始矩阵中所在行的行名。

ljo96ir5

ljo96ir51#

你可以用assign()来做这件事:

for (i in 1:nrow(M)) {
    vname <- paste0("row",i)
    assign(vname,row[i,])
}

for (i in rownames(M)) assign(i,M[i,])

...但是你应该仔细考虑你为什么要这样做。如果你这样做,你最终会得到一个充满单个变量的命名空间。此外,要在循环中访问单个变量,你将不得不使用get()assign()的逆)跳过丑陋而低效的环。你的用例是什么?

相关问题