Вот более простой способ:
df1 <- data.frame(a= c(NA,1,NA,2), b = 1:4)
df1[] <- lapply(df1, function(x) replace(x,is.na(x),mean(x,na.rm=TRUE)))
df1
# a b
# 1 1.5 1
# 2 1.0 2
# 3 1.5 3
# 4 2.0 4
Ваш код имеет тип, вы набрали colsmiss
вместо colmiss
.
Также ваш код ничего не возвращает (он возвращает последнее значение I), поэтому ваше преобразование значений NA нигде не записано.
Ваша исправленная функция:
RemoveNA = function(x)
{
colmiss = colnames(x)[apply(x,2,anyNA)]
colmiss
i = 1
while ( i <= length(colmiss))
{
col_na_col = match(colmiss[i],names(x))
col_na_col
for (n in col_na_col)
{
#column_name = colsmiss[i]
cat(' Your missing column is: ' ,'"',colmiss[i],'"',' and col.no is : ',n, '||||')
# Create mean
average_missing <- mean(x[,colmiss[i]],na.rm =TRUE)
average_missing
x[n][is.na(x[n])] = average_missing
}
i = i + 1
}
x
}