[R] ave(x, y, FUN=length) produces character output when x is character
Mike Miller
mbmiller+l at gmail.com
Fri Dec 26 05:30:13 CET 2014
On Thu, 25 Dec 2014, Bert Gunter wrote:
> You persist in failing to read the docs!
"the docs" -- do those exclude those I have been quoting and linking to?
> Moreover, neither Hadley Wickham, nor anyone else, is the authoritative
> source for R usage (other than for the (many!) packages he, himself has
> authored). R's Help pages and manuals -- and ultimately the source code
> -- are the only such source.
Very pendantic. Are you saying that Hadley Wickham's claim was incorrect?
To repeat, he said that this would return TRUE if x were a vector:
is.atomic(x) || is.list(x)
If you think that is wrong, I'd be interested to know more about that.
> ?factor says in its very first line:
>
> "The function factor is used to encode a **vector** as a factor (the
> terms ‘category’ and ‘enumerated type’ are also used for factors)...."
> (emphasis added)
So what? Are you saying that a factor *is* a vector? I quoted this
before, but I'll repeat it here -- from the third paragaraph of the
Details section of ?vector:
Note that factors are _not_ vectors; ‘is.vector’ returns ‘FALSE’
and ‘as.vector’ converts a factor to a character vector for ‘mode
= "any"’.
I guess that is an "authoritative source" by your criteria even though it
isn't in the first line of the page.
>> f <- factor (letters[1:3])
>> f
> [1] a b c
> Levels: a b c
>
>> attributes(f)
> $levels
> [1] "a" "b" "c"
>
> $class
> [1] "factor"
>
>> is.vector(f)
> [1] FALSE
>
>> attributes(f) <- NULL
>
>> f
> [1] 1 2 3
>> is.vector(f)
> [1] TRUE
And your point is what? Yes, we can convert between different kinds of
objects. Are you saying that a factor *is* a vector because you can
coerce it into a vector by removing its attributes?
I do think it is very central to this discussion that attributes(x) <-
NULL makes x into a vector, and that is not true just for factors, but
also matrices, as you showed me earlier. Following your lead, this is
another example:
> b <- 1:4
> attr(b, "dim") <- c(2,2)
> is.matrix(b)
[1] TRUE
Does that mean that "a matrix is a vector"? Not for me, but it does make
it easy to see how that concept helps people to understand the internal
workings of R. Gabor Grothendieck wrote, "I think its the idea that in R
all data objects are vectors (for some notion of vector) in the sense that
all Lisp objects are lists, all APL objects are arrays and all tcl objects
are character strings." That's how I've been thinking about it, too, but
I'm not sure that *all* data objects are vectors in this sense. If that
were the case, the Wickham test would always return TRUE.
> Don't you think it's time to call a halt to this?
You go first.
Mike
--
Michael B. Miller, Ph.D.
University of Minnesota
http://scholar.google.com/citations?user=EV_phq4AAAAJ
More information about the R-help
mailing list