有时缺失值被读取为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