在重塑(R语言)中向聚合函数传递参数

  • 本文关键字:函数 参数 语言 reshape
  • 更新时间 :
  • 英文 :


我在R中使用重塑将函数应用于我的数据集的不同变量。

mydata。M是熔体的输出。其中一栏是"诊断",这是一个表示饮食失调的因素,另一栏是"学校标识",这表明受试者就读于哪所学校。我想使用cast对每个Diagnosis应用一个函数。schoolIDEN需要传递给函数。value列包含每个诊断的二进制指示符。(背景:对数千名青少年进行了一系列饮食失调的评估,并对每个诊断和每个青少年进行了诊断编码。)

cast(mydata.m, Diagnosis ~ ., myFun, group = schoolIDEN) -> temp

myFun如下:

myFun <- function(x, group){
    out.gl <- glmer(x ~ (1|group), family=binomial(link="logit"))
    output <- inv.logit(confint.merMod(out.gl, method="Wald"))
    output
}

基本上,对于每个诊断,我想计算平均值的置信区间,调整学校因素(随机效应)。

然而,我得到一个错误。myFun在调用时找不到group

Error in eval(expr, envir, enclos) : 
缺少

参数"group",没有默认

不知何故,我的随机效应没有传递给聚合函数。

我可以在没有重塑的情况下做到这一点,通过我的数据帧循环,但我认为这会更快!

问题是聚合函数是分别对每一列执行的。并且你通过...传递的附加参数不会在与data.frame相同的环境中求值,它们也不是相应组的子集。因此,cast在这里并不是一个很好的选择。

我主要使用基本函数,所以我可以通过分解data.frame来尝试这一点,然后运行sapply来进行回归。就像

myFun2 <- function(dd){
    out.gl <- glmer(?response? ~ (1|group), dd family=binomial(link="logit"))
    output <- inv.logit(confint.merMod(out.gl, method="Wald"))
    output
}
dx <- split(my.data, my.data$Diagnosis)
sapply(dx, myFun2)

所以现在myFun2将为每个诊断传递一个data.frame子集。我不确定你在数据集中的响应变量名是什么所以你需要设置它

相关内容

  • 没有找到相关文章

最新更新