2012-02-21 42 views
1

我试图削减一行ř切成一排成相等长度的多个行

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

成相等长度的多个行使得

Y(ROW1)= [1个2 3 4

Y(ROW2)= 5 6 7 8

Y(ROW3)= 9 10 11 12]

我知道我可以使用rbind和cbind的组合来实现这个功能,但是我试图将它应用到的数据集比这个例子要大得多,所以我正在寻找一种更快更自动的方法。我试图削减和CUT2但那些没有工作或者

耶勒

+0

我有一种感觉,这是为了伪代码,但您在问题中定义x的方式不是有效的R语法。使用'x < - 1:12'或'x < - seq(1,12,by = 1)'或者甚至是'x < - c(1,2,3,4,5,6,7,8,9 ,10,11,12)'而不是。 – Chase 2012-02-21 14:01:46

回答

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不会引发错误,但您的数据将不会采用正确的格式!

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(大通在评论中指出)其填充矩阵沿着行而不是向下的列。

+1

只是一个FYI,为了匹配OP的输出,你需要按行填写。 – Chase 2012-02-21 13:59:17

+0

@Chase好的赶上! – chl 2012-02-21 14:03:04

+0

@chase谢谢,编辑。 – 2012-02-21 14:04:43