ř识别之前在符号

问题描述:

的变化的行我有一个矢量:ř识别之前在符号

df <- c(5,9,-8,-7,-1) 

如何识别之前在符号的改变的位置? 即df[2]

这很简单,如果你了解sign功能...

which(diff(sign(df))!=0) 
# [1] 2 
+1

...如果您了解'diff'功能:) – Tommy 2012-04-05 18:16:25

+0

谢谢。这非常有帮助。 – 2012-04-07 08:49:35

+0

小心,这个答案认为c(0,1)有一个符号改变。这可能会或可能不会取决于应用程序! – MHH 2015-06-30 06:39:06

我喜欢约书亚的答案,但这里是一个另类,更复杂的一个只是为了好玩:

head(cumsum(rle(sign(df))$lengths),-1) 
+0

+1复杂的乐趣! – 2012-04-05 18:22:28

+0

类似于@JoshuaUlrich的上面的答案,这个答案认为c(0,1)有一个符号变化。这可能会或可能不会取决于应用程序! – MHH 2015-06-30 06:41:00

如果你想成为一个可怕的人,你总是可以使用一个for循环:

signchange <- function(x) { 
    index = 0 
    for(i in 1:length(x)) 
    { 
     if(x[i] < 0) 
     { 
      return (index) 
     } 
     else 
     { 
      index = index + 1 
     } 
    } 
    return (index) 
} 
+2

我不是downvote,但如果你要成为一个可怕的人,并使用循环,你至少应该检查第一个元素是积极还是消极。功能是检测第一个负值 - 而不是第一个符号变化。 – Dason 2012-04-05 20:16:56