[R] question about update()

Adelchi Azzalini @zz@||n| @end|ng |rom @t@t@un|pd@|t
Thu May 4 10:34:00 CEST 2023

> On 4 May 2023, at 10:26, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
> On 04/05/2023 4:05 a.m., Adelchi Azzalini via R-help wrote:
>> Hi. There must be something about the use of update() which I do not grasp,
>> as the next exercise indicates.
>> Suppose that obj is an object returned by a call to lm() or glm().
>> Next, a new variable xf is constructed using the same dataframe used
>> for producing obj. Then
>> obj$data <- cbind(obj$data, xf=xf)
>> new.obj <- update(obj, . ~ . + xf)
>> generates
>> Error in eval(predvars, data, env) : object 'xf' not found
>> Could somebody explain what I got wrong, and how to fix it?
> I don't think you should be modifying the obj$data element:  as far as I can see, it's not used during the update, which will just re-evaluate the original call to glm().  So you should modify the dataframe that you passed in when creating obj.

Thanks, Duncan. What you indicate is surely the ideal route. Unfortunately, in my case this is not feasible, because the construction of xf and the update call are within an iterative procedure where xf is changed at each iteration, so that the steps 

obj$data <- cbind(obj$data, xf=xf)
new.obj <- update(obj, . ~ . + xf)
must be repeated hundreds of times, each with a different xf.


More information about the R-help mailing list