vacio - traza de una matriz en r
Encuentre la posiciĆ³n del primer valor mayor que X en un vector (6)
Asumir valores es tu vector.
firstGreatearThan <- NULL
for(i in seq(along=values)) {
if(values[i] > 100) {
firstGreatearThan <- i
break
}
}
Esta pregunta ya tiene una respuesta aquí:
En R: Tengo un vector y quiero encontrar la posición del primer valor que sea mayor que 100.
Echa un vistazo a which.max
:
x <- seq(1, 150, 3)
which.max(x > 100)
# [1] 35
x[35]
# [1] 103
Hay muchas soluciones, otra es:
x <- 90:110
which(x > 100)[1]
La mayoría de las respuestas en función de las which
y max
son lentas (especialmente para vectores largos), ya que se repiten en todo el vector:
-
x>100
evalúa cada valor en el vector para ver si coincide con la condición -
which
ymax
/min
busca todos los índices devueltos en el paso 1. y encuentra el máximo / mínimo
Position
solo evaluará la condición hasta que encuentre el primer valor VERDADERO e inmediatamente devolverá el índice correspondiente, sin continuar por el resto del vector.
Position(function(x) x > 100,x)
Solo por mencionar, Hadley Wickham ha implementado una función, detect_index
, para hacer exactamente esta tarea en su paquete purrr
para la programación funcional.
Recientemente utilicé detect_index
y lo recomendaría a cualquier otra persona con el mismo problema.
La documentación para detect_index
se puede encontrar aquí: https://rdrr.io/cran/purrr/man/detect.html
# Randomly generate a suitable vector
set.seed(0)
v <- sample(50:150, size = 50, replace = TRUE)
min(which(v > 100))