On Sep 7, 2011, at 6:04 AM, Varsha Agrawal wrote:

The code looks like this:
L1=list(a=1,b=2,c=3)
f1=as.factor(c)
L1[[f1]] returns 1

What happens if we give a factor as an index at a list?

In a virgin session of R there would be no 'c' for the second line to work with. And since 'c' is a function you would probably get an error.

> L1=list(a=1,b=2,c=3)
> f1=as.factor(L1$c)
> f1
[1] 3
Levels: 3
> L1[[f1]] #returns 1
[1] 1

It is ill-mannered to attach an object and not tell us that was done. So why is "3" as an index returning 1? because the internal representation of a factor was used by the parser. Furthermore even the usual dodge of wrapping as.character around f1 will not succeed since f1 didn't record where it got the value of "3", and there is no L1["3"] or L1[["3"]] only an L1[[3]] and an L1[3]

> L1[[as.character(f1)]]
NULL

So you need the "full-court [factor] press":

> L1[[as.numeric(as.character(f1))]]
[1] 3




        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to