这是我的问题: 我有一个向量,我想将其转换为具有固定列数的矩阵,但我不想在需要时复制向量以填充矩阵。 例如: 我的向量长度为15,我想要一个包含4列的矩阵。我希望从向量中获取15个元素的矩阵,并为矩阵中的最后一个元素获取0。 我怎样才能做到这一点?
编辑: 很抱歉没有明确说明问题并误导你们我的榜样。在我的程序中,我不知道矢量的长度,它取决于其他参数,这个问题涉及循环,所以我需要一个可以解决许多不同情况的通用解决方案,而不仅仅是我的例子 谢谢你回答。
答案 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