我希望能够在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。
答案 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()
的倒数)跳过丑陋且效率低下的箍。你的用例是什么?