Замена NA в каждом столбце матрицы на медиану этого столбца

Я пытаюсь заменить NA в каждом столбце матрицы медианой этого столбца, однако, когда я пытаюсь использоватьlapply или жеsapply Я получаю ошибку; код работает, когда я использую цикл for и когда я изменяю один столбец за раз, что я делаю неправильно?

Пример:

set.seed(1928)
mat <- matrix(rnorm(100*110), ncol = 110)
mat[sample(1:length(mat), 700, replace = FALSE)] <- NA
mat1 <- mat2 <- mat

mat1 <- lapply(mat1,
  function(n) {
     mat1[is.na(mat1[,n]),n] <- median(mat1[,n], na.rm = TRUE)
  }
)   

for (n in 1:ncol(mat2)) {
  mat2[is.na(mat2[,n]),n] <- median(mat2[,n], na.rm = TRUE)
}

Ответы на вопрос(4)

Ваш ответ на вопрос