在 RI 中,经常需要循环遍历lm
类型对象列表(例如glm
, lme
, clm
)并使用新公式或其他参数更新它们。我这样做lapply()
是因为它以相同的列表格式返回它们,名称完整,所以我可以继续这个过程。
有时我传递的论点是动态的,并且因每个模型而异。例如,
lapply(names(mylist) function(ii) {
jj<-myotherlist[[ii]];
update(mylist[[ii]],.~.+jj)
})
wherejj
是添加到列表中每个模型的术语,并在每个模型的基础上在其他列表中定义。
假设特定模型的预期结果公式应该是y~a+b+c
. 取而代之的是,结果对象内的调用lm
对象包含y~a+b+jj
. 因此,在某些情况下,生成的lm
对象行为正常,但每当需要评估公式时,它就会出错,因为jj
它早已不复存在。是否有一种推荐的方法可以在将对象update()
写入其输出时强制扩展其参数中的所有变量,call
或者强制使用该call
对象的函数在对象的内部上下文而不是全局上下文中评估调用lm
,以便在至少我可以将新变量填充到样式对象通常包含的model
对象中吗data
?lm
而且,如果使用动态变量更新的部分是数据参数怎么办?例如:
data=cbind(sharedByAllModels,y=kk)
... wherekk
是当前模型所独有的(可能是 sharedByAllModels 数据框中某些列的某种聚合)。