vectores vacio una traza seleccionar matriz filas eliminar datos data crear contar columnas agregar r vector position max

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:

  1. x>100 evalúa cada valor en el vector para ver si coincide con la condición
  2. which y max / 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))