如何在 R 中用 NA 替换矩阵列表中的 0?
有时会将缺失值读作 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
广告