如何在R语言中按行填充将向量转换为数组?
按行填充向量为数组的实现方法
R中默认的数组/矩阵填充规则是按列优先,所以你之前的代码会得到按列排列的结果。要实现按行填充,有两种简单的方法:
方法1:使用matrix()函数指定byrow=TRUE
matrix()函数支持直接设置填充方向,byrow=TRUE参数会让向量按行依次填充到矩阵中(二维数组本质就是矩阵,若需要显式转为数组,用as.array()转换即可)。
示例代码:
v = c(1,2,3,4,5,6) # 生成按行填充的二维数组(矩阵) M = matrix(data = v, nrow = 2, ncol = 3, byrow = TRUE)
运行结果:
> M [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
方法2:调整array()的填充逻辑
如果你一定要用array()函数,可以通过以下两种方式实现按行填充:
方式A:转置默认数组
先按默认规则生成对应维度的数组,再通过转置得到目标结果:
v = c(1,2,3,4,5,6) # 先生成3行2列的数组,再转置为2行3列 M = t(array(data = v, dim = c(3,2)))
方式B:指定order参数改变填充维度顺序
通过order参数调整维度遍历的优先级,让列维度先遍历,从而实现按行填充:
v = c(1,2,3,4,5,6) M = array(data = v, dim = c(2,3), order = c(2,1))
两种方式最终都会得到你期望的按行填充结果。
内容的提问来源于stack exchange,提问作者Abby
相关产品推荐
相关产品推荐

