Estoy escribiendo una función, que necesita una comprobación de si (y qué!) La columna (variable) tiene todos los valores faltantes (NA
, <NA>
). El siguiente es un fragmento de la función:Buscar columnas con todos los valores faltantes
test1 <- data.frame (matrix(c(1,2,3,NA,2,3,NA,NA,2), 3,3))
test2 <- data.frame (matrix(c(1,2,3,NA,NA,NA,NA,NA,2), 3,3))
na.test <- function (data) {
if (colSums(!is.na(data) == 0)){
stop ("The some variable in the dataset has all missing value,
remove the column to proceed")
}
}
na.test (test1)
Warning message:
In if (colSums(!is.na(data) == 0)) { :
the condition has length > 1 and only the first element will be used
P1: ¿Por qué es el error anterior y las correcciones?
Q2: ¿Hay alguna manera de encontrar cuál de las columnas tiene NA
, por ejemplo la lista de salida (nombre de la variable o número de columna)?
Creo que esto debe haber sido respondido antes: algo así como 'names (data) [lapply (data, function (x) all (is.na (x)))]' –
Sus paréntesis son incorrectos. Escriba 'colSums (! Is.na (data)) == 0' en lugar de' colSums (! Is.na (data) == 0) '. – sgibb