On 10/2/2006 3:21 PM, Herve Pages wrote: > Hi, > >> setClass("MyList", "list") > [1] "MyList" >> a <- new("MyList") >> a > An object of class "MyList" > list() >> setMethod("[[", "MyList", function(x, i, j, ...) cat("Just testing\n")) >> a[[]] > Just testing >> a[[1]] > Just testing >> a[[a=1]] > Just testing >> a[[b=1]] > Just testing > ... >> a[[v=1]] > Just testing >> a[[w=1]] > Just testing >> a[[x=1]] > Error in a[[x = 1]] : subscript out of bounds >> a[[y=1]] > Just testing >> a[[z=1]] > Just testing > > Can someone explain me why the "[[x=1]]" case is treated differently?
Indexing is a function call, with arguments x, i, j, ... . If you use y=1, you're setting something in the "..." part of the arg list. If you say x=1, you're setting the first arg, but because a[[x=1]] is the same as "[["(a, x=1), it is going to evaluate it as "[["(x=1, i=a) and try to index 1 by a instead of a by 1. Duncan Murdoch ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel