|
mat0
[,1] [,2] [,3] [,4]
[1,] 488 500 504 500
[2,] 488 502 505 476
mat0是定义的一个矩阵,我想求mat0的每个元素的R_aij <- mat0[i,j] - mean_row[i] - mean_col[j] + mean_aij,
这里mean_row[i]是mat0第i行的均值,mean_col[j]是mat0第j列的均值,mean_aij是整个mat0的均值,用上面的公式需要两个for循环,for循环运算时间比较长
for循环代码如下
mean_row <- rowMeans(mat0); #行的均值
mean_col <- colMeans(mat0) #列的均值
mean_aij <- mean(mat0); #矩阵均值
sum1 <- 0;
for (i in 1:nrow(mat0))
{
sum2 <- 0;
for (j in 1:ncol(mat0))
{
R_aij <- mat0[i,j] - mean_row[i] - mean_col[j] + mean_aij #R(aij)的公式
sum2 <- sum2 + R_aij
}
sum1 <- sum1 + sum2
}
我想用apply函数简化运算
R <- apply(mat0, 2, function(mat0) mat0 - mean_row - mean_col[j] + mean_aij )
我遇到的问题是我想按矩阵的列计算每个元素的R_aij,但是在运用上面自定义函数进行运算时每列都应用相同的mean_col[j]。我想要的是按列计算,计算第一列使用mean_col[1],第二列使用mean_col[2].
|
|