如何在 R 中按列 class 更改数据框中的值

How to change values in data frame by column class in R

我有一个包含一组不同变量的框架 - 整数、因子、逻辑 - 我想将所有 "NAs" 重新编码为整个数据集中的数字,同时保留基础变量class。例如:

frame <- data.frame("x" = rnorm(10), "y" = rep("A", 10))
frame[6,] <- NA

dat <- as.data.frame(apply(frame,2, function(x) ifelse(is.na(x)== TRUE, -9, x) ))
dat
str(dat)

然而,这里的整数变成了因数;当我在 apply() 函数中包含 as.numeric(x) 时,这会引入错误。感谢您对如何处理此问题的所有想法。

apply returns 字符类型的矩阵。 as.data.frame 默认将其转换为因数。相反,你可以做

dat <- as.data.frame(lapply(frame, function(x) ifelse(is.na(x), -9, x) ) )