Я пытаюсь написать функцию, которая превращает Null значения в NA. Сводка одной из моих столбцов выглядит так:Функция для изменения Null к NA
a b
12 210 468
Я хотел бы изменить 12 пустых значений на NA. У меня также есть несколько других факторов столбцы, для которых я хотел бы изменить нулевые значения NA, поэтому я заимствовал некоторые вещи здесь и там, чтобы придумать с этим:
# change nulls to NAs
nullToNA <- function(df){
# split df into numeric & non-numeric functions
a<-df[,sapply(df, is.numeric), drop = FALSE]
b<-df[,sapply(df, Negate(is.numeric)), drop = FALSE]
# Change empty strings to NA
b<-b[lapply(b,function(x) levels(x) <- c(levels(x), NA)),] # add NA level
b<-b[lapply(b,function(x) x[x=="",]<- NA),] # change Null to NA
# Put the columns back together
d<-cbind(a,b)
d[, names(df)]
}
Однако, я получаю это ошибка:
> foo<-nullToNA(bar) Error in x[x == "", ] <- NA : incorrect number of subscripts on matrix Called from: FUN(X[[i]], ...)
Я попробовал ответ здесь: Replace all 0 values to NA но меняет все мои столбцы в числовые значения.
Почему не функция 'is.null()' вместо 'x ==" "'? Может быть, ничего не найти. Вы проверили, возвращает ли ваш 'levels' что-либо. вы можете проверять внутреннюю часть своей функции шаг за шагом с вашими данными. проигнорируйте эту функцию и перейдите по строкам с вашими данными внутри вашей функции. –
Возможный дубликат [Заменить все 0 значений на NA] (http://stackoverflow.com/questions/11036989/replace-all-0-values-to-na) – Mateusz1981