私はベクトルを持っています:
df <- c(5,9,-8,-7,-1)
標識が変わる前の位置を特定するにはどうすればよいですか? すなわちdf[2]
関数について知っていれば、これは非常に簡単sign
です...
which(diff(sign(df))!=0)
# [1] 2
私はジョシュアの答えを好みますが、楽しみのために、より複雑な代替案を次に示します。
head(cumsum(rle(sign(df))$lengths),-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)
}