[Rd] How to overload the assignment operator?
Oleg Sklyar
osklyar at ebi.ac.uk
Tue Nov 13 15:07:57 CET 2007
I think the question is not about setReplaceMethod, here is the idea:
## setReplaceMethod-like situation:
> names(x) <- c("a","b")
## the question of interest
> class(x)
[1] myClass
> y <- x ## this to run a user-defined clone method for class 'myClass'
Why is this important - if x contains data that actually needs to be
duplicated this would come handy. I'd like to know the solution as well.
Maybe it's my ignorance that I don't know the answer and the response
will be RTFM - fine, just point out where :)
Best,
Oleg
On Tue, 2007-11-13 at 14:52 +0100, Matthias Kohl wrote:
> are you looking for "setReplaceMethod"?
> hth
> Matthias
>
> Jens Oehlschlägel wrote:
> > 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)
> >
> > --
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
--
Dr Oleg Sklyar * EBI-EMBL, Cambridge CB10 1SD, UK * +44-1223-494466
More information about the R-devel
mailing list