如何用列值的平均值替换数据框列中的几个 NA 值

how to replace several NA values in columns of a data frame with the mean of the values of the columns

我有一个来自心理学调查问卷答案的 df。我想用列值的平均值更改一些 NA 值。我试过两种方法
第一个是创建一个稍后会用到 sapply 的函数:

nar <- function(x) {x[is.na(x)] <<- round(mean(x, na.rm = TRUE))}

但是当我证明这个功能时,它并没有起作用。然而,此代码实际上适用于单个列:

x[is.na(x)] <<- round(mean(x, na.rm = TRUE)

所以我发现我也可以做一个 ifelse,它也适用于一列,但我不知道如何将它应用到所有列(我尝试了 sapply 和 apply 但没有用)。但是我不知道在 ifelse 函数中将什么作为 NO 参数。我只是想让它什么都不做,但我不知道该怎么做。

ifelse(is.na(dfv[,col]) == TRUE, dfv[,col][is.na(dfv[,col])] <- round(mean(dfv[,col], na.rm = TRUE)), help)

所以可能的问题是:如何将 NA 值自动替换为整个数据框中 NA 值所在的列值的平均值?

我会很感激任何帮助

不要使用 <<-。很少(从不)有用。尝试以这种方式使用它:

nar <- function(x) {x[is.na(x)] <- round(mean(x, na.rm = TRUE));x}
dfv[,col] <- sapply(dfv[,col], nar)