设为首页收藏本站获取积分奖励

R语言中文网

 找回密码
 立即注册
查看: 1700|回复: 1

求助求助R语言矩阵计算

[复制链接]
发表于 2017-8-9 12:07:12 | 显示全部楼层 |阅读模式
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].
回复

使用道具 举报

 楼主| 发表于 2017-8-9 13:40:14 | 显示全部楼层
有没有大神会啊?急需帮助。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|R语言中文网    

GMT+8, 2024-5-20 19:17 , Processed in 0.023045 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表