Skip to content
Prev 26667 / 63424 Next

How to overload the assignment operator?

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
  }
_                           
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)

--