【发布时间】:2018-01-20 09:50:21
【问题描述】:
我想应用一些包含可靠性测量的统计计算,例如 ICC 或变异系数。虽然我可以单独计算它们,但我还不熟悉 R 函数式编程实践以直接执行多个计算而无需太多代码重复。
考虑以下 data.frame 示例,其中包含对五个不同变量 (Var1, ... Var5) 的重复测量 (T1, T2):
set.seed(123)
df = data.frame(matrix(rnorm(100), nrow=10))
names(df) <- c("T1.Var1", "T1.Var2", "T1.Var3", "T1.Var4", "T1.Var5",
"T2.Var1", "T2.Var2", "T2.Var3", "T2.Var4", "T2.Var5")
如果我想计算每个变量的两个重复测量之间的类内相关系数,我可以:1)创建返回的函数:ICC,下限和上限值:
calcula_ICC <- function(a, b) {
ICc <- ICC(matrix(c(a,b), ncol = 2))
icc <- ICc$results[[2]] [3]
lo <- ICc$results[[7]] [3]
up <- ICc$results[[8]] [3]
round(c(icc, lo, up),2)
}
和 2) 将其应用于每个对应的变量,如下所示:
calcula_ICC(df$T1.Var1, df$T2.Var1)
calcula_ICC(df$T1.Var2, df$T2.Var2)
calcula_ICC(df$T1.Var3, df$T2.Var3)
calcula_ICC(df$T1.Var4, df$T2.Var4)
calcula_ICC(df$T1.Var5, df$T2.Var5)
然后,我将对每个变量进行类似的其他统计计算,例如重复测量之间的变异系数或标准误差。
但是,怎么可能使用一些函数式编程原理呢?例如,我如何创建一个函数,将 T1 和 T2 上的每个相应变量以及所需的函数作为参数?
【问题讨论】:
-
看看broom
-
如果你把数据整理成一个整洁的格式,这个问题会很多更容易解决:stackoverflow.com/questions/12466493/…
标签: r dataframe functional-programming purrr