矩阵的每一行中有多少个非 NA 值?
How many non-NA values in each row for a matrix?
我有一个矩阵(栅格),我正在计算该栅格中每一行的平均值:
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,因此每行中的值数量将不相同。
最简单:
rowSums(!is.na(x))
(感谢@Khashaa 提供此代码)。
注意 !
的使用等同于 "not"。这意味着 !is.na(x)
正在评估语句 "values that are not equal to "NA".
或者:
要return不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)
我有一个矩阵(栅格),我正在计算该栅格中每一行的平均值:
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,因此每行中的值数量将不相同。
最简单:
rowSums(!is.na(x))
(感谢@Khashaa 提供此代码)。
注意 !
的使用等同于 "not"。这意味着 !is.na(x)
正在评估语句 "values that are not equal to "NA".
或者:
要return不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)