[R] how to update my own function

Duncan Murdoch murdoch.duncan at gmail.com
Tue Nov 23 22:33:46 CET 2010


On 23/11/2010 4:21 PM, Edwin Sun wrote:
>
> Hello all,
>
> I wrote a function with many arguments. Then I need to call it many times
> with changes on some arguments only. Is there any way to write a function or
> have a method to "update" it, like the relationship between lm() and
> update()?
>
> Many thanks,
>
> Edwin Sun
>
> ------------
> This is the sample code.
>
>> test<- function(y, z) {
> +   x<- y +1
> +   w<- z * 2
> +   result<- list(x=x, w=w)
> +   class(result)<- "ego"
> +   return(result)
> + }
>
>> me<- test(y=3, z=4); me
> $x
> [1] 4
>
> $w
> [1] 8
>
> attr(,"class")
> [1] "ego"
>
>> update(me, y=5)
> Error in update.default(me, y = 5) : need an object with call component

Change the result line to

result<- list(x=x, w=w, call=sys.call())

and the default update method should do what you want.  If it doesn't, 
you can write an update.ego method to do something differently.

Duncan Murdoch

>



More information about the R-help mailing list