楼主: kanzongxuan
611 1

[程序分享] 求助:R语言如何多个矩阵的对应元素的中位数? [推广有奖]

  • 0关注
  • 0粉丝

大专生

6%

还不是VIP/贵宾

-

威望
0
论坛币
276 个
通用积分
2.0358
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
412 点
帖子
22
精华
0
在线时间
43 小时
注册时间
2015-6-8
最后登录
2024-11-22

楼主
kanzongxuan 发表于 2023-6-2 16:25:22 |AI写论文
10论坛币
如果有多个矩阵,矩阵的元素表示相同类型的特征,希望找到这些元素的中位数。
例如,有M1,M2,M3和M4共四个矩阵,维度为3 X 5,希望得到矩阵M,它也是3X5,它的值是M1-M4中各相同位置取值的中位数。

关键词:对应元素 中位数 R语言

沙发
qoiqpwqr 发表于 2023-6-3 10:31:46
可以用循环或者apply来搞

循环:
  1. > set.seed(1)
  2. > m1 <- matrix(rnorm(15), 3, 5)
  3. > m2 <- matrix(rnorm(15), 3, 5)
  4. > m3 <- matrix(rnorm(15), 3, 5)
  5. > m4 <- matrix(rnorm(15), 3, 5)
  6. >
  7. > out1 <- matrix(NA, nrow=nrow(m1), ncol=ncol(m1))
  8. > for (i in 1:nrow(m1)) {
  9. +   for (j in 1:ncol(m1)) {
  10. +     out1[i, j] <- median(c(m1[i, j], m2[i, j], m3[i, j], m4[i, j]))
  11. +   }
  12. + }
  13. > out1
  14.             [,1]         [,2]        [,3]       [,4]        [,5]
  15. [1,] -0.33569371  0.383708077  0.04656955  0.6915007 -0.83268760
  16. [2,]  0.08372653  0.461704547  0.20784234  0.7278262  0.03925657
  17. [3,]  0.57810227 -0.008444341 -0.27679087 -0.2045786  0.14144348
复制代码
用apply函数:
  1. > all.mat <- array(c(m1, m2, m3, m4), c(3, 5, 4))
  2. > out2 <- apply(all.mat, 1:2, median)
  3. > out2
  4.             [,1]         [,2]        [,3]       [,4]        [,5]
  5. [1,] -0.33569371  0.383708077  0.04656955  0.6915007 -0.83268760
  6. [2,]  0.08372653  0.461704547  0.20784234  0.7278262  0.03925657
  7. [3,]  0.57810227 -0.008444341 -0.27679087 -0.2045786  0.14144348
复制代码
一样的结果
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 23:36