如何替换一个包含 data.table 对象的 R 列表中的 NA 为 0?


如需在包含 data.table 对象的 R 列表中将 NA 替换为 0,我们可以按照以下步骤操作-

  • 首先,创建一个包含一些 NA 的 data.table 对象列表。

  • 然后,使用 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

输出

执行后,以上脚本会生成以下输出(此输出会在您的系统上因随机化而有所不同)-

[[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

更新于: 2021 年 11 月 16 日

494 views

开启你的 职业生涯

完成课程后获取认证

开始
广告