Sto scrivendo una funzione, che ha bisogno di un controllo se (e quale!) Colonna (variabile) ha tutti i valori mancanti (NA
, <NA>
). Di seguito è frammento della funzione:Trova colonne con tutti i valori mancanti
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
Q1: Perché è l'errore precedente e le eventuali correzioni?
Q2: Esiste un modo per trovare quale di colonne hanno tutti NA
, ad esempio, l'uscita l'elenco (nome del numero variabile o colonna)?
Mi sento come se avessi dovuto rispondere prima: qualcosa come 'nomi (dati) [lapply (dati, funzione (x) tutti (is.na (x)))]' –
Le parentesi sono sbagliate. Scrivi 'colSums (! Is.na (data)) == 0' invece di' colSums (! Is.na (data) == 0) '. – sgibb