Un vector atómico contiene elementos que pertenecen al mismo tipo de datos. También puede contener valores faltantes o NA, en cualquier índice dentro del rango de este vector. Se puede acceder a estos valores de NA en R mediante métodos de indexación estándar. En este artículo, vamos a ver cómo encontrar la posición de índice del primer valor no NA en un vector en el lenguaje de programación R.
Método 1: Usar los métodos is.na() y which()
El método de negación is.na() se aplica primero sobre el vector atómico, que devuelve un vector booleano de la misma longitud, donde VERDADERO indica que el valor no es na y FALSO indica que falta un valor o NA. A esto le sigue la aplicación del método which() que devuelve los índices de los valores non-na. Luego se aplica la función agregada min() para obtener el primero o el mínimo de elementos de todos los índices.
Código:
R
# declaring a vector vec <- c(NA, NA, 2, NA, 5, 7) print ("Original Vector") print (vec) # getting indexes of all the non na elements non_na_vec <- which(!is.na(vec)) # determining the minimum from these indices first_non_na <- min(non_na_vec) print ("First non-na index") print (first_non_na)
Producción:
[1] "Original Vector" [1] NA NA 2 NA 5 7 [1] "First non-na index" [1] 3
En caso de que el vector no contenga ningún valor que no falte, este enfoque genera una excepción y devuelve Inf
Mensaje de advertencia:
En min(non_na_vec): no faltan argumentos para min; regresando Inf
Método 2: método which.max()
El método which.max() devuelve el primer argumento que se encuentra dentro del vector con un valor que no es na. El método tiene la siguiente sintaxis en R :
which.max(vec)
Código:
R
# declaring a vector vec <- c(NA, 1, 3, NA, 2, NA, 5, 7) print ("Original Vector") print (vec) # getting indexes of all the non na elements non_na_vec <- which.max(!is.na(vec)) print ("First non-na index") print (non_na_vec)
Producción:
[1] "Original Vector" [1] NA 1 3 NA 2 NA 5 7 [1] "First non-na index" [1] 2
Publicación traducida automáticamente
Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA