[Rd] "$<-" fails (invalid subscript type 'language')
Vitalie S.
spinuvit.list at gmail.com
Sun Oct 24 22:21:42 CEST 2010
David Winsemius <dwinsemius at 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.
More information about the R-devel
mailing list