r - 1000 个列表中所有元素的快速平均值:返回 1 个值
问题描述
我有一个包含 10,000 个列表的 data.frame,每个列表包含 1000 个数字。我想计算一个 R 闪亮应用程序的所有数据的平均值(和 SD),并想找到最快的方法。它应该只返回 1 个平均值和 1 个 SD 值。任何人都可以建议一种方法吗?
示例数据
df<-data.frame(Risk=runif(10000))
df<-df %>%
rowwise()%>%
mutate(NumInfected = list(rbinom(n=1000, size = 1000, prob = Risk/100)))
这将生成一个带有嵌套列表的 data.frame,每个列表包含 1000 个值。
解决方案
在列上使用unlist
,然后在我的机器上计算平均值和标准差大约需要 0.1 秒。这速度够快吗?
ms <- function(df, col="NumInfected") {
u <- unlist(df[[col]])
return(c(mean(u), sd(u)))
}
library(microbenchmark)
microbenchmark(ms(df))
Unit: milliseconds
expr min lq mean median uq max neval
ms(df) 80.77705 84.43235 89.39736 89.0652 89.61738 149.7114 100
推荐阅读
- android - Is it normal for a screenshot to take 10 seconds in OpenTest/Appium?
- hyperledger-fabric - ENDORSEMENT_POLICY_FAILURE in hyperledger fabric in case of private data
- machine-learning - Why does the same PyTorch code (different implementation) give different loss?
- c# - 如何对修改私有成员字段状态的公共方法进行单元测试?
- powershell - 每个循环内的powershell启动过程
- django - “禁止(未设置 CSRF cookie。)”在 Django 开发环境中使用 https 而没有有效证书
- c# - 是否可以将文件存储在 C# 项目中并在需要时创建它?
- docker - 许可证主题的 Kafka Connect 复制因子
- reactjs - 我需要在页面加载 React 时禁用 prevButton
- html - 奇怪的 URL - 使用云创建重定向链接