R,未知指数的分裂向量

时间:2013-07-04 01:07:47

标签: r vector indexing split

我在R中有一个向量,其中包含至少50.000个实数。 值从小到大排序,现在我需要在不同的向量中分割这个向量。当两个数字之间的差异大于给定数量(比如两个)时,向量必须被分开。

实施例,

data <- c(1,1.1, 1.2, 4, 4.2, 8, 8.9, 9, 9.3);
# Then I need the following vectors:
x1 <- c(1, 1.1, 1.2);
x2 <- c(4, 4.2);
x3 <- c(8, 8.9, 9, 9.3);

困难在于我们不知道所需矢量的数量,并且不知道正面每个矢量的长度。

现在我有了以下想法,但这非常耗时,只能将矢量分成两个新的矢量。

j <- 2;
seqDemA1 <- seqDemandA[1];
while((seqDemandA[j-1] - seqDemandA[j] < 2) && (j < length(seqDemandA)+1)) {
    seqDemA1 <- c(seqDemA1, seqDemandA[j]);
    j <- j+1;
}
seqDemA2 <- seqDemandA[j];
j <- j+1;
while((seqDemandA[j-1] - seqDemandA[j] < 2) && (j < length(seqDemandA)+1)) {
    seqDemA2 <- c(seqDemA2, seqDemandA[j]);
    j <- j+1;
}

我期待着你的帮助!

1 个答案:

答案 0 :(得分:7)

试试这个,

split(data, cumsum(c(0, diff(data)>=2)))