从矢量中选择l [x],其中(l [x] - 1 [x-1])> 1

时间:2017-10-21 16:47:13

标签: r

我有列表l

l_in <- c(1:5, 8, 11:13, 17)

我想从此列表l_in[x]

中选择(l_in[x] - l_in[x-1]) > 1元素

所以输出应该是:

   l_out <- c(8, 11, 17)

此外,我还想在第一个l_in元素之前添加来自l_out的元素,因此输出应为:

   l_out2 <- c(5, 8, 11, 17)

由于

2 个答案:

答案 0 :(得分:1)

我们可以尝试:

delta <- diff(l_in) > 1
c(l_in[which(delta)[1]], l_in[c(FALSE, delta)])

答案 1 :(得分:1)

你确定l_out中应该有13个吗?无论如何试试这个。

l_in <- c(1:5, 8, 11:13, 17)
l_out <- c()
for(i in 2:length(l_in)) {
  if (l_in[i] - l_in[i-1] > 1) l_out <- c(l_out,l_in[i])
}
l_out <- c(l_in[which(l_in == l_out[1]) - 1],l_out)
l_out
[1]  5  8 11 17