> x <- structure(3, class = "myclass") > y <- 5 > foo <- function(x,y) paste(x, " indexed by '", y, "'", sep="") > foo(x, y) [1] "3 indexed by '5'" > "$.myclass" <- foo > x$y [1] "3 indexed by 'y'" >
The point of the above example is that foo(x,y) behaves differently from x$y even when both call the same function: foo(x,y) uses the value of the variable 'y', whereas x$y uses the string "y". This is as desired for an indexing operator "$".
-- Tony Plate
Gabor Grothendieck wrote:
On 4/27/05, Ali - <[EMAIL PROTECTED]> wrote:
Assume we have a function like:
foo <- function(x, y)
how is it possible to define a binary indexing operator, denoted by $, so that
x$y
functions the same as
foo(x, y)
Here is an example. Note that $ does not evaluate y so you have to do it yourself:
x <- structure(3, class = "myclass") y <- 5 foo <- function(x,y) x+y "$.myclass" <- function(x, i) { i <- eval.parent(parse(text=i)); foo(x, i) } x$y # structure(8, class = "myclass")
[[alternative HTML version deleted]]
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html