【问题标题】:mean of triplicate measurments in 3 matrices3 个矩阵中三次测量的平均值
【发布时间】:2016-11-16 01:26:58
【问题描述】:

我有 3 个矩阵,它们存储来自三次测量的值,并且想要取 3 个矩阵的平均值。

假设这三个矩阵是:

m1<-t(matrix(c("text", 1:3), ncol=2, nrow=4))
m2<-t(matrix(c("text", 1:3), ncol=2, nrow=4))
m3<-t(matrix(c("text", 1:3), ncol=2, nrow=4))

> m1
     [,1]   [,2] [,3] [,4]
[1,] "text" "1"  "2"  "3" 
[2,] "text" "1"  "2"  "3" 
> m2
     [,1]   [,2] [,3] [,4]
[1,] "text" "1"  "2"  "3" 
[2,] "text" "1"  "2"  "3" 
> m3
     [,1]   [,2] [,3] [,4]
[1,] "text" "1"  "2"  "3" 
[2,] "text" "1"  "2"  "3" 

我希望矩阵的每个位置都有这个:

mean(m1[i,j], m2[i,j], m2[i,j])

所以我尝试了 2 个 for 循环:

for(i in ncol(m1)){
  for(j in nrow(m1)){
    means[i,j]<-mean(m1[i,j], m2[i,j], m2[i,j])
  }

这显然行不通

如果返回 NA,则第一列中的文本不是问题。

有人可以帮帮我吗? 谢谢!

【问题讨论】:

  • 你在这篇文章中要求mean,我提供了。我的代码有什么问题?

标签: r matrix mean


【解决方案1】:

我们可以把它放在list中,转换成数字并使用Reduce

lst <- lapply(list(m1[, -1], m2[,-1], m3[, -1]), as.numeric)
Reduce(`+`,lst)/length(lst)

如果有很多以'm'开头的矩阵,我们可以使用mget

lst <- lapply(mget(paste0("m", 1:3)), function(x) as.numeric(x[,-1]))

然后执行Reduce 步骤。

【讨论】:

  • 但这将如何计算平均值?
  • @KevinRoth 它按元素求和,当我们除以 3 即矩阵数时,我们得到平均值
  • appologies,我指的是中位数,而不是平均值。愚蠢的我
  • @KevinRoth 你的整个帖子都是关于mean。我回答了你发布的问题。
猜你喜欢
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
相关资源
最近更新 更多