7

我有一个向量:

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

如何在符号更改之前识别位置?IEdf[2]

4

3 回答 3

14

这很简单,如果你知道这个sign功能......

which(diff(sign(df))!=0)
# [1] 2
于 2012-04-05T18:14:25.820 回答
1

我更喜欢 Joshua 的回答,但这里有一个更复杂的替代方案,只是为了好玩:

head(cumsum(rle(sign(df))$lengths),-1)
于 2012-04-05T18:16:48.657 回答
-1

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

signchange <- function(x) {
    index = 0
    for(i in 1:length(x))
    {
        if(x[i] < 0)
        {
            return (index)
        }
        else
        {
            index = index + 1
        }
    }
    return (index)
}
于 2012-04-05T18:20:23.787 回答