我有一个数组列表,其中每个数组只有2个元素,并带有数字,否则是NA。在所有数组中,任何给定的元素都只有一个数字。
以下是一些示例数据。
ar1=array(NA,dim=c(2,3,4))
ar1[1,1,1]=100
ar2=array(NA,dim=c(2,3,4))
ar2[2,3,4]=200
ar3=array(NA,dim=c(2,3,4))
ar3[2,1,4]=300
ar=list(ar1,ar2,ar3)谢谢!
发布于 2015-01-14 00:28:59
您可以将Reduce与忽略NA的任何向量化函数一起使用:
Reduce(function(x, y) ifelse(!is.na(x), x, y), ar)另一个例子是:
library(functional)
Reduce(Curry(pmax, na.rm = TRUE), ar)发布于 2015-01-14 00:29:32
pmax有一个na.rm参数,您可以将ar作为一个列表与该参数一起传递给带有do.call的pmax:
> do.call(pmax, c(ar, na.rm=TRUE) )
, , 1
[,1] [,2] [,3]
[1,] 100 NA NA
[2,] NA NA NA
, , 2
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
, , 3
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
, , 4
[,1] [,2] [,3]
[1,] NA NA NA
[2,] 300 NA 200https://stackoverflow.com/questions/27933911
复制相似问题