我希望在20个列中将NA替换为0。我发现了这种方法适用于2列,但我认为如果列数为20,则不是最佳选择。是否有其他更紧凑的解决方案?
mydata[,c("a", "c")] <-
apply(mydata[,c("a","c")], 2, function(x){replace(x, is.na(x), 0)})
更新: 为了简单起见,我们采用这个包含8列的数据,并将b、c、e、f和d列中的NA替换掉。
a b c d e f g d
1 NA NA 2 3 4 7 6
2 g 3 NA 4 5 4 Y
3 r 4 4 NA t 5 5
结果必须是这个:
a b c d e f g d
1 0 0 2 3 4 7 6
2 g 3 NA 4 5 4 Y
3 r 4 4 0 t 5 5
cols <- c("b", "c", "e", "f"); mydf[cols] <- replace(mydf[cols], is.na(mydf[cols]), 0)
。 - A5C1D2H2I1M1N2O1R2T1d
的列吗? - Rich Scriven