[R] two apparent anomalies

Moritz Grenke r-list at 360mix.de
Sat Jan 22 16:12:05 CET 2011

My explanation for No2: 

When coercing a character vector to factor, the current levels are stored.
By choosing a subvector of the factor you don't change the levels of the
factor. So levels(a[1:3]) is still [1] "a" "b" "c" in the last line ... 

If you want to reduce levels you need to tell R. 

> levels(a[1:3, drop=TRUE])
[1] "a" "b"

Moritz Grenke

-----Ursprüngliche Nachricht-----
Von: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] Im
Auftrag von analyst41 at hotmail.com
Gesendet: Samstag, 22. Januar 2011 15:17
An: r-help at r-project.org
Betreff: [R] two apparent anomalies


> a = c("a","b")
> mode(a)
[1] "character"
> b = c(1,2)
> mode(b)
[1] "numeric"
> c = data.frame(a,b)
> mode(c$a)
[1] "numeric"


> a = c("a","a","b","b","c")
> levels(as.factor(a))
[1] "a" "b" "c"
> levels(as.factor(a[1:3]))
[1] "a" "b"
> a = as.factor(a)
> levels(a)
[1] "a" "b" "c"
> levels(a[1:3])
[1] "a" "b" "c"

Any explanation would be helpful.  Thanks.

R-help at r-project.org mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list