[R] Problem assigning "NA" as a level name in a list

Cliff Behrens cliff at research.telcordia.com
Tue Dec 16 18:51:18 CET 2008


Peter,

I've inserted response inline below:

Cliff

Peter Dalgaard wrote:
> Cliff Behrens wrote:
>> Peter,
>>
>> OK...here is reproducible, self-contained code:
>>
>> library(gregmisc)
>
> Relying on a 3rd party package is not kosher either... Whatever did
> list("NA"=2)  or l <- list(2); names(l) <- "NA" do to you?
>
I'm not sure what you mean by "3rd party?"  I downloaded this package 
from the CRAN site where I get all others.  I don't understand your 
question.
>> columnNames <- c("A","B","C","D","N","a","b","c")
>> namePerms<- permutations(length(columnNames),2,columnNames,repeats=TRUE)
>> nameList <- paste(namePerms[,1],namePerms[,2],sep="")
>> dataList <- lapply(1:length(nameList), function(level) {})
>> names(dataList)<-  nameList  ## The "NA" is interpreted that the name 
>> is missing for one list in dataList
>>
>> If you inspect the contents of dataList, you will find the following 
>> showing that the name "NA" is treated differently:
>
> Anyways....  As I thought:
>
> Remember that NA is a reserved word. You get the same kind of reaction 
> if you name an element "for" or "in". It denotes that you need to 
> quote the name for indexing with $:
>
I thought that since all of the names in namesList were type char, there 
was no need to enclose these in quotation marks.
> > names(l) <- "NA"
> > l$NA
> Error: unexpected numeric constant in "l$NA"
> > l$`NA`
> [1] 2
> > l$"NA"
> [1] 2
> > l[["NA"]]
> [1] 2
> > names(l)
> [1] "NA"
>
>> ......
>>
>> $Na
>> NULL
>>
>> $`NA`
>> NULL
>>
>> $Nb
>> NULL
>> .........
>> Peter Dalgaard wrote:
>>> Cliff Behrens wrote:
>>>> I want to generate a list (called "dataList" below) where each of 
>>>> its levels is named.  These names are assigned to nameList, which 
>>>> contains all possible permutations of size two taking letters from 
>>>> a larger alphabet, e.g., "aa",...,"Fd",..,"Z1",...  One of these 
>>>> permutations is the character string "NA".  It seems that when I 
>>>> try to name one of the dataList levels "NA", using 
>>>> names(dataList)<- nameList, the names() function assigns the 
>>>> missing character to the level.  Is there someway to preserve "NA" 
>>>> as the name of a level in dataList?  Here is the R code I have been 
>>>> using to do this.
>>>>
>>>> namePerms<- 
>>>> permutations(ncol(coinMat),2,colnames(coinMat),repeats=TRUE)
>>>> nameList <- paste(namePerms[,1],namePerms[,2],sep="")
>>>> dataList <- lapply(1:length(nameList), function(level) {})
>>>> names(dataList)<-  nameList     ## The "NA" in nameList is 
>>>> interpreted so that the name "NA" is missing for one level in dataList
>>>>
>>>> I am running R 2.4.1 in the Windows XP environment.
>>>>
>>>> Thanks for any help that can be offerred.
>>>
>>> Your example is not reproducible and self-contained. What is 
>>> "permutations" and "coinMat"??
>>>
>>> I bet it isn't minimal either.
>>>
>>> It doesn't seem to be happening for me with a recent(!) version of 
>>> R, but you could just be misinterpreting the backtick quoting.
>>>
>>> -
>>>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>>>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>>>  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 
>>> 35327918
>>> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 
>>> 35327907
>>
>
>



More information about the R-help mailing list