[R] Is it a bug in list() behavior?

Uwe Ligges ligges at statistik.uni-dortmund.de
Mon Mar 24 19:31:37 CET 2003


Tony Plate wrote:
> As wolski/Eryk's example shows, it seems that "[[" for lists accepts abbreviations, whereas "[" does not.  Is this intended?  (This is a difference from S-plus - both "[" and "[[" for lists accept abbreviations in S-plus (V6.1 for Windows at least.)

The general subscripting operator [] doesn't support abbreviations at 
all. I don't know of any reference that states [] supports partial 
matching of character strings.


> I couldn't find any mention of this difference in regards to accepting abbreviations in either ?"[" or section 6.1 of the Introduction to R, or in the R Language Manual, or in the R Reference Manual.  [As an aside, I'd rather that the subset operators didn't accept abbreviations at all,but ...]

[[]] is the component extractor for lists, and the reference I gave 
tells us that partial matching works for component indexing.
I agree that it's a good idea to mention this behaviour in the R 
Language *Definition* manual.



> The name returned by "[" for a non-existent element of a list also seems of dubious correctness.
> 
> 
>>list(abc=123)[["a"]]
> 
> [1] 123
> 
>>list(abc=123)["a"]
> 
> $"NA"
> NULL

Everything as expected from my point of view. Do you mean the "NA" is 
"dubious"?

See the R Language Definition, Section 3.4.1:
"Notice however, that there are different modes of NA—the literal 
constant is of mode "logical", but it is frequently automatically 
coerced to other types."
Remember, it's a name!

Uwe Ligges


> 
>>list(abc=123)$a
> 
> [1] 123
> 
>>version
> 
>          _              
> platform i386-pc-mingw32
> arch     i386           
> os       mingw32        
> system   i386, mingw32  
> status                  
> major    1              
> minor    6.2            
> year     2003           
> month    01             
> day      10             
> language R              
> 
> 
> 
> At Monday 04:54 PM 3/24/2003 +0100, you wrote:
> 
>>wolski wrote:
>>
>>>Hello!
>>>let:
>>>test<-1:3
>>>list(test)
>>>names(test)<-c("X11","X12","Y23")
>>>
>>>
>>>>test[["Y2"]]
>>>
>>>3
>>>I had assumed that the names in a list are like a keys in a hash.
>>>Therefore i thought that no value should be returned.
>>>The behavior of:
>>>
>>>
>>>>test["Y2"]
>>>
>>><NA>   NA 
>>>is as i expected.
>>>
>>>Should it be as it is? How is the definition of [[]] and []?
>>
>>No! See "An Introduction to R", Section 6.1:
>>"The names of components may be abbreviated down to the minimum number of letters needed to identify them uniquely. Thus Lst$coefficients may be minimally specified as Lst$coe and Lst$covariance as Lst$cov."
>>
>>Uwe Ligges
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> 
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help



More information about the R-help mailing list