R分裂矢量与跳跃

时间:2015-06-03 14:15:38

标签: r vector split

我使用以下结构创建了矢量:

full_seq <- runif(10^8)

我想生成一个新的矢量,提取相同大小的样本。这对我来说很好:

full_splited <- split(full_seq, ceiling(seq_along(full_seq)/10^3))

现在,我需要按固定大小从一个块跳到另一个块。让我们采用100个数字的序列,10个元素的样本和4个元素的跳跃来说明:

full_seq = 1 2 3 4 5 6 7 8 9 10 .. 100
full_splitted2 [1] = 1 2 3 4 5 6 7 8 9 10 
               [2] = 14 15 16 17 18 19 20 21 22 23 
               [3] = 27 28 29 30 31 32 33 34 35 36 
               [4] = 40 .. 49 
               [5] = 53 .. 62 
               [6] = 66 .. 75
               [7] = 79 .. 88

full_splited2 的第8个元素超出 full_seq 的边界,并且不会成为已拆分对象的成员。

我不知道这是否是更好的代表,但我已经尝试了一些解决方案而没有成功。

任何帮助?

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是你在找什么?

full_seq <- 1:100 
mysize <- 10
myjump <- 4

myseq <- seq(from=1, to=length(full_seq), by=myjump+mysize-1)
full_splitted2 <- c()
for (i in myseq) {
  if ((i+mysize-1) <= length(full_seq)) {
    full_splitted2 <- c(full_splitted2, full_seq[i:(i+mysize-1)])
  }
}
full_splitted2 <- matrix(full_splitted2, ncol=mysize, byrow=TRUE)

full_splitted2

[1,]    1    2    3    4    5    6    7    8    9    10
[2,]   14   15   16   17   18   19   20   21   22    23
[3,]   27   28   29   30   31   32   33   34   35    36
[4,]   40   41   42   43   44   45   46   47   48    49
[5,]   53   54   55   56   57   58   59   60   61    62
[6,]   66   67   68   69   70   71   72   73   74    75
[7,]   79   80   81   82   83   84   85   86   87    88