[Rd] How to overload the assignment operator?

"Jens Oehlschlägel" oehl_list at gmx.de
Tue Nov 13 14:35:59 CET 2007


Dear all,

what is the proper way to make the assignment operator generic and define methods depending on the class of the assigned value?

Best regards


Jens Oehlschlägel

P.S. I vaguely remember that this was possible in S+. In R I tried to no avail: 

  # using this like h<-1:3 gives Error: in `<-.default`(h, 1:3) : invalid (do_set) left-hand side to assignment
  "<-.default" <- get("<-") 

  # using this does fail on subassignments like: h <- 1:3 ; h[1] <- 7 (h still is 1:3)
  "<-.default" <- function(x, value){
    assign(deparse(substitute(x)), value, parent.frame())
    invisible(x)
  }

  # this seems to work
  "<-" <- function(x, value){
    UseMethod("<-", value)
  }

  # whenever the assigned value has class 'ff' I want to do execute something like
  "<-.ff" <- function(x, value){
    y <- clone(value)
    assign(deparse(substitute(x)), y, parent.frame())
    y
  }


> version
               _                           
platform       i386-pc-mingw32             
arch           i386                        
os             mingw32                     
system         i386, mingw32               
status                                     
major          2                           
minor          6.0                         
year           2007                        
month          10                          
day            03                          
svn rev        43063                       
language       R                           
version.string R version 2.6.0 (2007-10-03)

--



More information about the R-devel mailing list