向量化 R 中矩阵的行/列

问题描述 投票:0回答:1

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

r variables matrix vector
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()
的倒数)跳过丑陋且低效的循环。你的用例是什么?

© www.soinside.com 2019 - 2024. All rights reserved.