R:如何在不复制向量的情况下将向量转换为矩阵?

时间:2017-04-21 02:14:29

标签: r

这是我的问题: 我有一个向量,我想将其转换为具有固定列数的矩阵,但我不想在需要时复制向量以填充矩阵。 例如: 我的向量长度为​​15,我想要一个包含4列的矩阵。我希望从向量中获取15个元素的矩阵,并为矩阵中的最后一个元素获取0。 我怎样才能做到这一点?

编辑: 很抱歉没有明确说明问题并误导你们我的榜样。在我的程序中,我不知道矢量的长度,它取决于其他参数,这个问题涉及循环,所以我需要一个可以解决许多不同情况的通用解决方案,而不仅仅是我的例子 谢谢你回答。

2 个答案:

答案 0 :(得分:1)

您可以将矢量子集化为列数的倍数(以便包含所有元素)。这将向向量添加必要数量的NA。然后转换为矩阵。

x = 1:15
matrix(x[1:(4 * ceiling(length(x)/4))], ncol = 4)
#     [,1] [,2] [,3] [,4]
#[1,]    1    5    9   13
#[2,]    2    6   10   14
#[3,]    3    7   11   15
#[4,]    4    8   12   NA

如果您想将NA替换为0,则可以在另一步中使用is.na()

答案 1 :(得分:0)

我们也可以使用dim<-length<-

执行此操作
n <- 4
n1 <- ceiling(length(x)/n)
`dim<-`(`length<-`(x, n*n1), c(n1, n))
#     [,1] [,2] [,3] [,4]
#[1,]    1    5    9   13
#[2,]    2    6   10   14
#[3,]    3    7   11   15
#[4,]    4    8   12   NA

数据

x <- 1:15