从矢量中提取连续的元素对并放置在矩阵中

时间:2014-10-14 21:23:59

标签: r

这可能是一个简单的问题但是我找不到如何从矢量顺序生成值对,其中每对包括具有两列的值矩阵中的最后值和新值。以下示例

C<-c(1 , 20 , 44 , 62 , 64 , 89 , 91, 100)

矩阵示例

newpairs
     [,1] [,2]
[1,]    1   20
[2,]   20   44
[3,]   44   64
[4,]   64   89
[5,]   89   91
[6,]   91  100

因此,当我尝试矩阵时,它不起作用,因为最后一个元素没有用新元素

重复
newpairs <- matrix(C, ncol=2, byrow=TRUE) 

newpairs

     [,1] [,2]
[1,]    1   20
[2,]   44   62
[3,]   64   89
[4,]   91  100

我猜您可以进行子集但是如果C值发生变化,那么您必须更改子集的丢弃或保留。我也尝试过提取某些增量或可以提取每个第n个元素的函数。但是,我想找到一种系统的方法来创建第一个示例矩阵。

欢迎任何帮助

2 个答案:

答案 0 :(得分:7)

这符合您想要的输出:

cbind(C[-length(C)], C[-1])
     [,1] [,2]
[1,]    1   20
[2,]   20   44
[3,]   44   62
[4,]   62   64
[5,]   64   89
[6,]   89   91
[7,]   91  100

答案 1 :(得分:2)

怎么样:

## define input    
C <- c(1 , 20 , 44 , 62 , 64 , 89 , 91, 100)
## replicate all but first and last elements
Crep <- rep(C,c(1,rep(2,length(C)-2),1))
## create matrix
matrix(Crep,ncol=2,byrow=TRUE)