David Winsemius <dwinsem...@comcast.net> writes: > On Oct 24, 2010, at 5:35 AM, Vitalie S. wrote: > >> >> This might be just beyond of my understanding of how assignment works in R, >> but >> the documentation does not say anything about: >> >>> tv <- c(a="dsf", b="sss") >>> tl <- list(232) >>> `$<-`(tl, tv[[1]], "sdfdsfdsfsd") >> Error: invalid subscript type 'language' > > Are either of these what you should have done to get what it appears you were > aiming for but didn't specify? >
I meant what I wrote there. After the assignment, the list tl should have element 'dsf' with the value "sdfdsfdsfsd" (sorry for bad names). > `$<-`(tl, "sdfdsfdsfsd", tv[[1]]) > # yields > [[1]] > [1] 232 > > $sdfdsfdsfsd > [1] "dsf" > >> `[<-`(tl, tv[[1]], "sdfdsfdsfsd") > [[1]] > [1] 232 > > $dsf > [1] "sdfdsfdsfsd" > > The "$" operator does not evaluate the index whereas the "[" function does. > And the documentation is quite clear > about that distinction. > If it is evaluated or not it is hardly an explanation for the error. It throws the error before the method is even dispatched. If the index (in $'s case the name) is unevaluated then my methods should get an expression 'tv[[1]]', which I can then handle. Example: setClass("classX", contains="list") setMethod("$<-", "classX", function(x, name, value){ print("I am here!!") x }) x <- new("classX") tv <- c("aa", "bb") `$<-`(x, tv[[1]], 4343) #gives Error: invalid subscript type 'language' > -- > David Winsemius. > >> >> This happens even before the method is dispatched. I can not handle the >> "name" argument in my S4 method, because it's not even entered. >> >> Thanks, >> Vitalie. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel