[R] different behavior of $ with string literal vs string variable as argument

Bert Gunter gunter.berton at gene.com
Sun Feb 10 22:59:35 CET 2013


Please read the Help before posting.

?"$" says:

"Both [[ and $ select a single element of the list. The main
difference is that $ **does not allow computed indices** , whereas [[
does. x$name is equivalent to x[["name", exact = FALSE]]. Also, the
partial matching behavior of [[ can be controlled using the exact
argument. " [emphasis added]

In other words, $ does not evaluate its argument.

This also appeared just a couple of days ago on this list, so please
also search Help archives before posting.

-- Bert

On Sun, Feb 10, 2013 at 1:06 PM, David Romano <dromano at stanford.edu> wrote:
> Hi everyone,
>
> I ran into the issue below while trying to execute a command of the form
>
> apply(list.names,1, function(x)  F(favorite.list$x) )
>
> where list.names is a character vector containing the names of the elements
> of favorite.list and F is some function defined on a list element.
>
> Namely,  the $ operator doesn't treat the string variable 'x' as the string
> it represents, so that, e.g.
>
>> ll <- list(ss="abc")
>> ll$ss
> [1] "abc"
>> ll$"ss"
> [1] "abc"
>
> but
>
>> name <- "ss"
>> ll$name
> NULL
>
> I can get around this by using integers and the [[ and [ operators, but I'd
> like to be able to use names directly, too -- how would I go about doing
> this?
>
> Thanks for your help in clarifying what might be going on here.
>
> David
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm



More information about the R-help mailing list