我有一个矩阵(栅格),我正在计算此栅格中每行的平均值:
library (raster)
r <- raster(nrows=10, ncols=10);r <- setValues(r, 1:ncell(r))
extent(r) = extent(c(xmn=-180,xmx=180,ymn=-90,ymx=90))
stepsize = (r@extent@ymax - r@extent@ymin) / r@nrows
yvals = seq(r@extent@ymax - stepsize / 2, r@extent@ymin, -stepsize)
The x-values will be the mean of each row in the raster:
xvals = rowMeans(as.matrix(r))
plot(xvals, yvals)
我需要知道计算每行(N)的平均值时考虑了多少个值?某些像素可能具有NA,因此每行中的值的数量将不相同。
答案 0 :(得分:3)
最简单:
rowSums(!is.na(x))
(感谢@Khashaa提供此代码)。
注意使用!
等同于#34;而不是&#34;。这意味着!is.na(x)
正在评估语句&#34; 不的值等于&#34; NA&#34;。
<强>可替换地:强>
要返回非NA,您可以按如下方式更改代码:
sum(is.na(x)==FALSE)
您可以使用apply
修改代码,将代码应用于矩阵,如下所示:
apply(d,2,function(x) sum(is.na(x))==TRUE))
其中 d
是一个矩阵,例如:
d=matrix(c(1,NA,NA,NA),ncol=2,nrow=2)