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



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to