Re: [R] OOP and passing by value

From: Joris Meys <jorismeys_at_gmail.com>
Date: Wed, 09 Jun 2010 14:36:59 +0200

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

______________________________________________
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.
Received on Wed 09 Jun 2010 - 12:40:59 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 09 Jun 2010 - 13:20:27 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive