Tengo un vector:R identificar una fila antes de un cambio de signo
df <- c(5,9,-8,-7,-1)
¿Cómo puedo identificar la posición antes de un cambio de signo? es decir df[2]
Tengo un vector:R identificar una fila antes de un cambio de signo
df <- c(5,9,-8,-7,-1)
¿Cómo puedo identificar la posición antes de un cambio de signo? es decir df[2]
Esto es bastante simple, si usted sabe acerca de la función sign
...
which(diff(sign(df))!=0)
# [1] 2
prefiero la respuesta de Joshua, pero aquí es una alternativa, uno más complicado sólo por diversión:
head(cumsum(rle(sign(df))$lengths),-1)
+1 por diversión complicada! –
de forma similar a la respuesta anterior por @JoshuaUlrich, esta respuesta considera que c (0,1) tiene un cambio de signo. Esto puede o no ser deseado dependiendo de la aplicación. – MHH
Si quieres ser una persona terrible, usted podría utilizar siempre un bucle for:
signchange <- function(x) {
index = 0
for(i in 1:length(x))
{
if(x[i] < 0)
{
return (index)
}
else
{
index = index + 1
}
}
return (index)
}
No fui el votante negativo pero si vas a ser una persona terrible y usas un bucle, al menos deberías comprobar si el primer elemento es positivo o negativo. La función como es detecta el primer valor negativo, no el primer cambio de signo. – Dason
... y si conoce la función 'diff' :) – Tommy
Gracias. Eso es muy útil. –
Tenga cuidado, esta respuesta considera que c (0,1) tiene un cambio de signo. Esto puede o no ser deseado dependiendo de la aplicación. – MHH