0

我希望能够在 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 循环以允许我在每个迭代的变量名分配发生变化的情况下执行此操作. 理想情况下,我希望能够在我有一个带有行名的矩阵的情况下做到这一点,然后我可以为每个向量分配一个变量名,即原始矩阵中它所在行的行名。

4

1 回答 1

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())跳过丑陋和低效的循环。你的用例是什么?

于 2017-06-03T02:36:43.950 回答