From oehl_list at gmx.de  Tue Nov 13 14:35:59 2007
From: oehl_list at gmx.de (=?iso-8859-1?Q?=22Jens_Oehlschl=E4gel=22?=)
Date: Tue, 13 Nov 2007 14:35:59 +0100
Subject: [Rd] How to overload the assignment operator?
Message-ID: <20071113133559.270580@gmx.net>

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)

--



[Rd] How to overload the assignment operator?
=?iso-8859-1?Q?=22Jens_Oehlschl=E4gel=22?=