You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现列表内矩阵排除0值取唯一值计算平均值的方法

R语言矩阵列表非0唯一值均值计算方案

核心实现逻辑:遍历列表中的每个矩阵,依次完成「提取非0元素→元素去重→计算均值」三个步骤即可,以下是两种常用实现方式:

方法1:Base R 原生实现(无额外依赖)

无需加载第三方包,直接用R内置函数即可完成计算:

# 你的示例数据
mat1.data <- c(0,6,3,8,0,6,8,10,0)
mat1 <- matrix(mat1.data,nrow=3,ncol=3,byrow=TRUE)
mat2.data <- c(0,5,5,1,0,1,7,23,0)
mat2 <- matrix(mat2.data,nrow=3,ncol=3,byrow=TRUE)
# 建议将列表名改为mat_list避免和之前的mat1变量冲突,你也可以保留原命名
mat_list <- list(mat1, mat2)

# 核心计算代码
result <- lapply(mat_list, function(x) {
  # 提取非0值→去重→计算均值
  mean(unique(x[x != 0]))
})

# 查看结果
print(result)

计算结果说明:

  • 第一个矩阵非0去重后值为 3、6、8、10,均值为 6.75
  • 第二个矩阵非0去重后值为 1、5、7、23,均值为 9

如果需要将结果转为向量格式,直接调用unlist(result)即可。

方法2:tidyverse 风格实现

如果你已经在使用tidyverse生态,可以用purrr的管道写法实现,逻辑更直观:

library(purrr)

result <- mat_list %>% 
  map(~mean(unique(.x[.x != 0])))

内容的提问来源于stack exchange,提问作者John Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:54:05