如何将矩阵列表中的0替换为R中的NA?
有时缺失值被读取为0,这不是表示它们的正确方法,因此,我们必须将数据中的0转换为NA,以便R可以理解缺失值和0之间的差异。对于此替换,我们可以使用lapply函数,并使用下面的示例所示的函数将替换应用于所有矩阵。
示例
M1<-matrix(sample(c(0,rpois(6,5)),30,replace=TRUE),ncol=3)输出结果M2<-matrix(sample(c(0,rpois(6,1)),30,replace=TRUE),ncol=3)
List1<-list(M1,M2)
List1
[[1]][,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 0 5
[3,] 5 5 3
[4,] 3 3 5
[5,] 5 5 3
[6,] 3 3 3
[7,] 3 3 5
[8,] 5 3 3
[9,] 0 3 5
[10,] 5 3 3
[[2]]
[,1] [,2] [,3]
[1,] 1 6 6
[2,] 1 6 1
[3,] 0 6 1
[4,] 0 1 6
[5,] 1 0 6
[6,] 6 0 6
[7,] 1 0 0
[8,] 0 6 0
[9,] 0 1 1
[10,] 0 1 1
lapply(List1,function(x)replace(x,x == 0,NA))
[[1]][,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 NA 5
[3,] 5 5 3
[4,] 3 3 5
[5,] 5 5 3
[6,] 3 3 3
[7,] 3 3 5
[8,] 5 3 3
[9,] NA 3 5
[10,] 5 3 3
[[2]]
[,1] [,2] [,3]
[1,] 1 6 6
[2,] 1 6 1
[3,] NA 6 1
[4,] NA 1 6
[5,] 1 NA 6
[6,] 6 NA 6
[7,] 1 NA NA
[8,] NA 6 NA
[9,] NA 1 1
[10,] NA 1 1
示例
M3<-matrix(sample(c(0,rpois(6,5)),20,replace=TRUE),ncol=4)输出结果M4<-matrix(sample(c(0,rpois(6,1)),20,replace=TRUE),ncol=4)
List2<-list(M3,M4)
List2
[[1]][,1] [,2] [,3] [,4]
[1,] 5 4 4 3
[2,] 0 4 4 3
[3,] 4 6 6 0
[4,] 0 5 5 4
[5,] 6 5 0 0
[[2]]
[,1] [,2] [,3] [,4]
[1,] 4 2 4 0
[2,] 0 0 2 0
[3,] 2 2 0 1
[4,] 4 4 1 0
[5,] 0 0 1 0
lapply(List2,function(x)replace(x,x == 0,NA))
[[1]][,1] [,2] [,3] [,4]
[1,] 5 4 4 3
[2,] NA 4 4 3
[3,] 4 6 6 NA
[4,] NA 5 5 4
[5,] 6 5 NA NA
[[2]]
[,1] [,2] [,3] [,4]
[1,] 4 2 4 NA
[2,] NA NA 2 NA
[3,] 2 2 NA 1
[4,] 4 4 1 NA
[5,] NA NA 1 NA
以上是 如何将矩阵列表中的0替换为R中的NA? 的全部内容, 来源链接: utcz.com/z/330188.html