Re: [Rd] Differences between "$" and "[["

From: Peter Dalgaard <p.dalgaard_at_biostat.ku.dk>
Date: Tue 30 Nov 2004 - 02:19:24 EST

Eric Lecoutre <lecoutre@stat.ucl.ac.be> writes:

> Hi,
>
> If I define the following list:
>
> > (l<-list("text-align"="right"))
> $"text-align"
> [1] "right"
>
> I know that I can't use l$text-align, as the parser will find a '-' operation.
> If I want (need) to use special names, as "text-align", I have to

> enclose it between "". So I can use:
>

> l$"text-align" or l[["text-align"]]
>

> If now I have the text "text-align" defined in a variable:

>
p<-"text-align"
>

> I can use:

> > l[[p]]
> [1] "right"
>

> But I can't use l$p
>

> where as it is said in the help page that 'x$name' is equivalent to

>
'x[["name"]]'.
>

> Anyway I will use "[[" but I dont clearly understand this behavior.

It also says

     The operators '$' and '$<-' do not evaluate their second argument.
      It is translated to a string and that string is used to locate
     the correct component of the first argument.

so l$p looks for l[["p"]] since the p is treated as a symbol. The fact that there is an object called p and that it contains a special name is immaterial (the opposite would be truly scary...).

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Nov 30 02:38:39 2004

This archive was generated by hypermail 2.1.8 : Tue 30 Nov 2004 - 03:13:11 EST