对 R 中的矩阵进行矢量化 rows/columns

Vectorizing rows/columns of a Matrix in R

我希望能够在 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 循环以允许我在变量名称处执行此操作每个 iterand 的赋值变化。理想情况下,我希望能够在我有一个带有行名称的矩阵的地方执行此操作,然后我可以为每个向量分配一个变量名称,即原始矩阵中它的行的行名称。

可以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() 的倒数)的丑陋且低效的循环。你的用例是什么?