[R] argument 'exclude' in function xtabs
Matthieu Lesnoff
matthieu.lesnoff at gmail.com
Sun Apr 26 11:45:05 CEST 2009
Ok thanks Erik
Indeed, "exclude" in "xtabs" seems working whith character vectors:
> x <- c(rep(c("A","B","C"), 2))
> x
[1] "A" "B" "C" "A" "B" "C"
> xtabs(~ x, exclude = "B")
x
A C
2 2
and not directly with factors:
> x <- factor(rep(c("A","B","C"), 2))
> x
[1] A B C A B C
Levels: A B C
> levels(x)
[1] "A" "B" "C"
> xtabs(~ x, exclude = "B")
x
A B C
2 2 2
while function "table" does it:
> x <- factor(rep(c("A","B","C"), 2))
> x
[1] A B C A B C
Levels: A B C
> table(x, exclude = "B")
x
A C
2 2
However, one point remains confusing for me in function "table". When I add
a NA in the vector, it still works:
> x <- factor(c(rep(c("A","B","C"), 2), NA))
> x
[1] A B C A B C <NA>
Levels: A B C
> table(x, exclude = "B")
x
A C
2 2
but not anymore when I use argument "exclude = NULL" in function "factor":
> x <- factor(c(rep(c("A","B","C"), 2), NA), exclude = NULL)
> x
[1] A B C A B C <NA>
Levels: A B C <NA>
> table(x, exclude = "B")
x
A B C <NA>
2 2 2 1
Finally, if I remove NA, it works again:
> x <- factor(rep(c("A","B","C"), 2), exclude = NULL)
> x
[1] A B C A B C
Levels: A B C
> table(x, exclude = "B")
x
A C
2 2
it looks like "exclude" does not work when NA is a level
Regards
Matthieu
> -----Message d'origine-----
> De : Erik Iverson [mailto:iverson at biostat.wisc.edu]
> Envoyé : 24 April 2009 19:13
> À : Matthieu Lesnoff
> Cc : r-help at r-project.org
> Objet : Re: [R] argument 'exclude' in function xtabs
>
>
> > I was willing to use argument 'exclude' in function xtabs to remove
> > some levels of factors (xtabs help page says '"exclude: a vector of
> > values to be excluded when forming the set of levels of the
> classifying factors").
>
>
> I think I see what's happening, and it's a little confusing
> to me, too.
> If your classifying factor to xtabs is not actually a factor,
> but say, a character vector, it will be converted to a factor
> while using the "exclude" argument. However, if it already
> is a factor, this does not happen.
> So, for example, contrast:
>
> trt.char <- c("A","B","C","A","B","C")
> xtabs(~trt.char, exclude = "B")
>
> with
>
> trt.fac <- factor(c("A","B","C","A","B","C"))
> xtabs(~trt.fac, exclude = "B")
>
> Hope that helps,
> Erik Iverson
>
More information about the R-help
mailing list