如何在包含 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(this output will vary on your system due to randomization)-

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

以上是 如何在包含 data.table 对象的 R 列表中用 0 替换 NA? 的全部内容, 来源链接: utcz.com/z/355718.html

回到顶部