Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用NA平均每3列_R_Matrix_Average - Fatal编程技术网

如何在R中使用NA平均每3列

如何在R中使用NA平均每3列,r,matrix,average,R,Matrix,Average,我有一个带NA的矩阵,我想找出每行每3列的平均值 set.seed(100) a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10) 代码找不到包括NA在内的列的平均值。我想知道如何修改代码。非常感谢。我们也可以通过转换为3D数组来实现这一点,然后在循环第三个边距后获得行的意思 res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE) all.equ

我有一个带NA的矩阵,我想找出每行每3列的平均值

set.seed(100)
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10)

代码找不到包括NA在内的列的平均值。我想知道如何修改代码。非常感谢。

我们也可以通过转换为3D数组来实现这一点,然后在循环第三个边距后获得
行的意思

res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3), 
       mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE

res
t(apply(a,1,tapply,gl(3,3),mean,na.rm=TRUE))
我是个白痴,哈哈,谢谢。谢谢你的帮助。
c(nrow(a),3,3)
是什么意思?谢谢。@YangYang 3D数组有3个维度,第一个是行,第二个是列,第三个是维度。这里,行数与原始矩阵的行数相同。因此,我将其指定为
nrow(a)
,下一个是3,因为每个数组中只需要3列,非常感谢您的帮助!
res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3), 
       mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE