在R中矢量化矩阵的行/列

时间:2017-06-03 02:28:42

标签: r variables matrix vector rowname

我希望能够在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上的变量名称赋值更改。理想情况下,我希望能够在具有行名称的矩阵的情况下执行此操作,然后我可以为每个向量分配变量名称,该变量名称是原始矩阵中它的行的rowname。

1 个答案:

答案 0 :(得分:3)

可以使用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()的倒数)跳过丑陋且效率低下的箍。你的用例是什么?