[R] proto: make a parameter persist

Gabor Grothendieck ggrothendieck at gmail.com
Sat Feb 18 07:38:44 CET 2012


On Sat, Feb 18, 2012 at 12:44 AM, Ben quant <ccquant at gmail.com> wrote:
> The code below works as expected but:
> Using the proto package, is this the best way to 1) make a parameter
> persist if the parameter is passed
> in with a value, 2) allow for calling the bias() function without a
> parameter assignment, 3) have
> the x2 value initialize as 5? Thanks for your feedback. Giving the
> proto package a test beat and
> establishing some templates for myself.
>
>> oo <- proto(expr = {x = c(10, 20, 15, 19, 17)                     x2 = 5 # so x2 initializes as 5, but can be overwritten with param assignment                     bias <- function(.,x2=.$x2) { # x2=.$x2 so no default param is needed                         .$x2 = x2 # so x2 persists in the env                         .$x <- .$x + x2                     } })> o = oo$proto()> o$x # [1] 10 20 15 19 17> o$x2 #[1] 5> o$bias(x2 = 100)> o$x2 # [1] 100> o$x # [1] 110 120 115 119 117
>

This is not very different from what you have already but here it is
for comparison.  Note that the with(...) line has the same meaning as
.$x <- .$x + .$x2 :

oo <- proto(
   x = c(10, 20, 15, 19, 17),
   x2 = 5,
   bias = function(., x2) {
      if (!missing(x2)) .$x2 <- x2
      with(., x <- x + x2)
   }
)

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list