我有兩份名單,我想使他們在NA
方面是一致的。把NA放在兩個列表中的一個列表中,而不改變列表結構中的其他內容。如何處理兩個列表中的NA?
set.seed(123)
m1 <- matrix(nrow=2,ncol=2,data=runif(4))
m1[1,1] <- NA
m2 <- matrix(nrow=2,ncol=2,data=runif(4))
m2[1,2] <- NA
lis <- list(m1, m2)
m1 <- matrix(nrow=2,ncol=2,data=runif(4))
m2 <- matrix(nrow=2,ncol=2,data=runif(4))
m2[2,1] <- NA
bis <- list(m1, m2)
我試過,但沒有成功bis[is.na(lis)]=NA
所需的輸出:
> lis
[[1]]
[,1] [,2]
[1,] NA 0.9568333
[2,] 0.4566147 0.4533342
[[2]]
[,1] [,2]
[1,] 0.9404673 NA
[2,] 0.0455565 NA
> bis
[[1]]
[,1] [,2]
[1,] NA 0.9568333
[2,] 0.4566147 0.4533342
[[2]]
[,1] [,2]
[1,] 0.6775706 NA
[2,] 0.5726334 NA
替換第一行與:'z < - 地圖(功能ion(...){dots < - as.list(...); arr < - do.call(abind,c(dots,along = 3));適用(arr,1:2,任何)},lapply(lis,is.na),lapply(bis,is.na))'。我認爲這應該工作。雖然可能比較慢。需要'abind'軟件包。關鍵是用'any'替換'|'。 – Bazz
@Bazz,請繼續並將其添加到您的答案。我會看看我是否可以找到不同的方法 –
它是你的答案的改編,而不是我的答案。 'as.list'應該只是'list'。 – Bazz