[R] access elements of a named list using a factor

Robin Hankin rksh1 at cam.ac.uk
Fri Oct 23 15:47:38 CEST 2009


Hello Dimitris

thanks for this.   It works!  I guess I was fixated on the dollar sign.

I must confess that I don't really understand any of the error
messages below.  Can anyone help me interpret them?

rksh



Dimitris Rizopoulos wrote:
> do you mean:
>
> f <- factor(c("pigs", "pigs", "slugs"))
> jj <- list(pigs = 1:10, slugs = 1:3)
>
> jj[levels(f)[1]]
> jj[[levels(f)[1]]]
>
>
> Best,
> Dimitris
>
>
> Robin Hankin wrote:
>> Hi
>>
>> I have a factor 'f' and a named list 'jj'.
>>
>> I want names(jj) to match up with levels(f).
>>
>> How do I use levels(f) to access elements of jj?
>>
>>
>>  > f <- factor(c("pigs","pigs","slugs"))
>>  > f
>> [1] pigs  pigs  slugs
>> Levels: pigs slugs
>>  >
>>  > jj <- list(pigs=1:10,slugs=1:3)
>>
>>
>>
>> My attempts to produce jj$pigs all give errors:
>>
>>  > jj$levels(f)[1]
>> Error: attempt to apply non-function
>>
>>  > do.call("$",jj,levels(f)[1])
>> Error in if (quote) { : argument is not interpretable as logical
>>
>>  >  "$"(jj,levels(f)[1])
>> Error in jj$levels(f)[1] : invalid subscript type 'language'
>>
>>
>>
>>
>>
>>
>


-- 
Robin K. S. Hankin
Uncertainty Analyst
University of Cambridge
19 Silver Street
Cambridge CB3 9EP
01223-764877




More information about the R-help mailing list