【发布时间】:2017-03-14 01:47:20
【问题描述】:
我正在尝试对数据集中的多个个体主题运行 glm 以返回特定系数。我在这里找到了一个很好的例子(Multiple glm in for loop)。除了,结果打印到屏幕上,但之后不可用。因此,除非我在 RStudio 中突出显示屏幕然后复制/粘贴到 Excel 中,否则我无法保存结果或重命名变量。
数据:
Subject SNRs Prop_Correct Ntrials
1 3 0.65 100
1 0 0.40 100
1 -3 0.15 100
1 -6 0.00 100
1 -9 0.00 100
1 -12 0.00 100
2 3 0.65 100
2 0 0.40 100
2 -3 0.15 100
2 -6 0.00 100
2 -9 0.00 100
2 -12 0.00 100
3 3 0.65 100
3 0 0.40 100
3 -3 0.15 100
3 -6 0.00 100
3 -9 0.00 100
3 -12 0.00 100
我的脚本:
ddply(Data, .(Subject), function (x){
intercept <- coef(summary(glm(Prop_Correct~SNRs, weights=Ntrials,family=quasibinomial(link='logit'),data=x)))[1]
slope <- coef(summary(glm(Prop_Correct~SNRs, weights=Ntrials,family=quasibinomial(link='logit'),data=x)))[2]
SNR50 <- (log(0.5/(1-0.5))/slope) - (intercept/slope)
Data_Summary <- c(SNR50,slope)
})
这给了我这个输出:
Subject V1 V2
1 1 1.266165 0.4834356
2 2 1.266165 0.4834356
3 3 1.266165 0.4834356
但是:
Data_Summary
Error: object 'Data_Summary' not found
如何使 ddply 函数的结果可用于主/全局环境?
【问题讨论】:
-
您需要将函数的结果分配给 globalenv() 中的名称 Data_Summary,而不是函数中。
-
这是我无法解决的问题。函数的结果在函数之外不可用。如果我在函数之后尝试 Data_Summary,我得到:错误:找不到对象'SNR50'
-
试试
assign函数。 -
这几乎可行,除了我只得到最后一个主题的结果。
results <- c(slope,SNR50)assign("Data_Summary",value=results,envir=globalenv())})我将预期的输出打印到屏幕上,但 Data_Summary 仅在一行中显示 2 个值 -
使用
list而不是c。