Прежде всего, способ, которым вы создали фрейм данных, приведет к тому, что столбцы фреймов данных будут иметь все значение.Я изменил ваш код следующим образом, чтобы первый фрейм данных был фактором, а второй фрейм данных - символом.
dat_1 <- data.frame(x = c("A", "B", "C", "D"))
dat_2 <- data.frame(x = c("A", "B", "C", "D"), stringsAsFactors = FALSE)
dat <- list("dat_1" = dat_1, "dat_2" = dat_2)
Мы можем использовать следующий код, чтобы заменить все буквы "C" на NA
.
dat2 <- lapply(dat, function(x){
x[] <- lapply(x, function(x) replace(x, x %in% "C", NA))
return(x)
})
dat2
# $dat_1
# x
# 1 A
# 2 B
# 3 <NA>
# 4 D
#
# $dat_2
# x
# 1 A
# 2 B
# 3 <NA>
# 4 D
Код не изменит типы столбцов.
lapply(dat2, function(x) sapply(x, class))
# $dat_1
# x
# "factor"
#
# $dat_2
# x
# "character"