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

在R中如何计算列表内多个dataframe相同位置单元格的标准差

问题背景

我目前有一个包含多个维度一致的dataframe的列表,满足以下条件:

  • dataframe中的每个单元格对应唯一样本的一次读数
  • 每个dataframe都是同一批数据的重复测量结果

示例数据构造代码如下:

a <- data.frame(matrix(sample(20,10), ncol = 5, nrow = 5))
b <- data.frame(matrix(sample(20,10), ncol = 5, nrow = 5))
c <- data.frame(matrix(sample(20,10), ncol = 5, nrow = 5))

sampledData <- list(a, b, c)

示例数据输出参考:

> a
  X1 X2 X3 X4 X5
1 15  2 15  2 15
2 19  6 19  6 19
3 14 11 14 11 14
4  3  5  3  5  3
5 10  4 10  4 10
> b
  X1 X2 X3 X4 X5
1 14 10 14 10 14
2  5  7  5  7  5
3  9 15  9 15  9
4  3 18  3 18  3
5  8 17  8 17  8
> c
  X1 X2 X3 X4 X5
1  4  5  4  5  4
2 14 12 14 12 14
3 17 10 17 10 17
4 11 16 11 16 11
5  7  9  7  9  7

需求:代码可直接作用于上述sampledData列表,最终输出维度一致的dataframe,每个单元格存储列表中所有dataframe相同位置数据的标准差。


解决方案

方法1:Base R实现(无需额外安装依赖包)

sd_result <- as.data.frame(apply(simplify2array(sampledData), c(1, 2), sd))

代码逻辑说明:

  • simplify2array(sampledData)将同维度的dataframe列表转换为三维数组,第三维对应列表中每个dataframe的元素
  • apply(..., c(1,2), sd)对数组的每一个行、列位置,提取所有重复测量值计算标准差
  • as.data.frame()将计算得到的标准差矩阵转换为dataframe格式,输出结果和原数据维度、列名完全匹配

方法2:tidyverse/purrr风格实现

library(purrr)
sd_result <- pmap_dfr(transpose(sampledData), ~sd(c(...)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:04