[R] OOP and passing by value
Joris Meys
jorismeys at gmail.com
Wed Jun 9 14:36:59 CEST 2010
by returning the object ?
setMethod("setData","test",
function(this,fcn,k){
this at t <- as.numeric(seq(-k,k))/(2*k+1)
this at f <- sapply(this at t,FUN=fcn) #changed!
return(this) #changed!
}
)
#-----------------------------------------------------------
> tst <- new("test")
> fcn <- function(u){ sin(2*pi*u) }
> New <- setData(tst,fcn,5)
> New at t
[1] -0.4545455 -0.3636364 -0.2727273 -0.1818182 -0.0909091 0.0000000
0.0909091 0.1818182 0.2727273 0.3636364 0.4545455
On Wed, Jun 9, 2010 at 2:28 PM, michael meyer <mjhmeyer at googlemail.com> wrote:
> Greetings,
>
> I love the R system and am sincerely grateful for the great effort the
> product and contributors
> are delivering.
>
> My question is as follows:
>
> I am trying to use S4 style classes but cannot write functions that modify
> an object
> because paramter passing is by value.
> For example I want to do this:
>
> setGeneric("setData", function(this,fcn,k){ standardGeneric("setData") })
>
> setClass(
> "test",
> representation(f="numeric", t="numeric")
> )
> setMethod("setData","test",
> function(this,fcn,k){
> this at t <- as.numeric(seq(-k,k))/(2*k+1)
> this at f <- sapply(t,FUN=fcn)
> }
> )
>
> #-----------------------------------------------------------
> tst <- new("test")
> fcn <- function(u){ sin(2*pi*u) }
> setData(tst,fcn,100)
> tst at t # it's still empty because of pass by value
>
>
> How can this be handled?
>
>
> Many thanks,
>
> Michael
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>
--
Joris Meys
Statistical consultant
Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control
tel : +32 9 264 59 87
Joris.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
More information about the R-help
mailing list