2017-10-21 141 views
1

我有列表l从矢量选择升[x]其中(L [X] - 1 [X-1])> 1

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元件之前包括元件,所以outpu T应当是:

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

感谢

回答

1

,我们可以尝试:

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

你是对的,我已经修复了OP。 –

+0

好的,我会相应地调整我的答案。 –

1

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

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 
+0

你是对的,我已经修复OP。 –