我想遍历数据框中的特定列,并使用循环将所有 NA 替换为 0。
extract = read.csv("2013-09 Data extract.csv")
extract$Premium1[is.na(extract$Premium1)] <- 0
extract$Premium1
在数据框 extract
中为 Premium1
提供了所需的结果,但我想遍历所有 27 列 premium,所以我正在尝试的是
extract = read.csv("2013-09 Data extract.csv")
for(i in 1:27) {
thispremium <- get(paste("extract$Premium", i, sep=""))
thispremium[is.na(thispremium)] <- 0
}
给出
Error in get(paste("extract$Premium", i, sep = "")) :
object 'extract$Premium1' not found
知道导致错误的原因吗?
最佳答案
您是否因为其他要求而需要循环?因为没有它也能正常工作:
extract[is.na(extract)] <- 0
如果只想对某些列进行替换,请先选择这些列,执行替换,然后将这些列替换回原始集合:
first5 <- extract[, 1 : 5]
first5[is.na(first5)] <- 0
extract[, 1 : 5] <- first5
更一般地说,在 R 中几乎可以(并且应该)避免循环——尤其是在处理数据帧时)。通常操作会自动矢量化(如上)。如果没有,则可以使用 apply
系列的函数。
关于使用数据帧上的循环将 R 中的 NA 替换为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19383987/