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
Dimitris Rizopoulos
2009-Oct-23 13:42 UTC
[R] access elements of a named list using a factor
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' > > > > > >-- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus University Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014