如何在包含 data.table 对象的 R 列表中用 0 替换 NA?
要将包含data.table对象的R列表中的NA替换为0,我们可以按照以下步骤操作-
首先,创建一个data.table包含一些NA的对象列表。
然后,使用lapply函数和is.na函数将列表中的NA替换为0。
示例
创建列表
让我们创建一个列表,如下所示-
library(data.table) DT1<- data.table(x1=sample(c(NA,rpois(5,5)),15,replace=TRUE),x2=sample(c(NA,rpois(5,1)),1 5,replace=TRUE)) DT2< data.table(Y1=sample(c(NA,rpois(2,2)),15,replace=TRUE),Y2=sample(c(NA,rpois(2,5)), 15,replace=TRUE)) List<-list(DT1,DT2) List输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
[[1]] x1 x2 1: NA 0 2: 6 0 3: 7 0 4: 10 2 5: 7 0 6: 10 0 7: NA 0 8: 7 2 9: 10 NA 10: 7 0 11: 6 0 12: 10 NA 13: 7 0 14: 7 2 15: 6 NA [[2]] Y1 Y2 1: NA NA 2: 4 4 3: 4 4 4: NA 3 5: 4 NA 6: NA NA 7: 4 NA 8: 1 4 9: 1 3 10: 1 NA 11: NA 4 12: 1 4 13: 1 NA 14: NA 3 15: NA NA
用0替换NA
使用lapply函数和is.na函数将列表中的NA替换为0,如下所示-
library(data.table) DT1<- data.table(x1=sample(c(NA,rpois(5,5)),15,replace=TRUE),x2=sample(c(NA,rpois(5,1)),1 5,replace=TRUE)) DT2<- data.table(Y1=sample(c(NA,rpois(2,2)),15,replace=TRUE),Y2=sample(c(NA,rpois(2,5)), 15,replace=TRUE)) List<-list(DT1,DT2) lapply(List, function(x) {x[is.na(x)] <- 0; x})输出结果
[[1]] x1 x2 1: 0 0 2: 6 0 3: 7 0 4: 10 2 5: 7 0 6: 10 0 7: 0 0 8: 7 2 9: 10 0 10: 7 0 11: 6 0 12: 10 0 13: 7 0 14: 7 2 15: 6 0 [[2]] Y1 Y2 1: 0 0 2: 4 4 3: 4 4 4: 0 3 5: 4 0 6: 0 0 7: 4 0 8: 1 4 9: 1 3 10: 1 0 11: 0 4 12: 1 4 13: 1 0 14: 0 3 15: 0 0