矩阵的每行中有多少个非NA值?

时间:2015-04-14 14:29:03

标签: r raster

我有一个矩阵(栅格),我正在计算此栅格中每行的平均值:

  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,因此每行中的值的数量将不相同。

1 个答案:

答案 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)