R将一行切成相等长度的多行

时间:2012-02-21 13:45:36

标签: r

我正在尝试削减一行

x = [1 2 3 4 5 6 7 8 9 10 11 12]

成多行相等的长度以便

y(row1)= [1 2 3 4

y(第2行)= 5 6 7 8

y(row3)= 9 10 11 12]

我知道我可以使用rbind和cbind的组合实现这一点,但我尝试应用它的数据集比示例大得多,所以我正在寻找一种更快速,更自动地完成它的方法。我尝试过cut and cut2但是那些都没有用

耶勒

2 个答案:

答案 0 :(得分:5)

函数matrix()是你的朋友:

> matrix(1:12, nrow = 3, byrow = TRUE)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

请注意可选参数byrow。默认值为FALSE,将按列填充矩阵,将其设置为true,在这种情况下获取按照您描述的顺序排列的数据。需要注意的事项,因为如果按列填充,R不会抛出错误,但您的数据格式不正确!

答案 1 :(得分:3)

使用matrix

> y <- 1:12
> y
 [1]  1  2  3  4  5  6  7  8  9 10 11 12
> matrix(y,3,4,byrow=1)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12

修改:我将byrow=TRUE参数包含在matrix中(在评论中由Chase指出),这些参数填充矩阵沿行而不是 down 列。