On 25/12/2014 11:30 PM, Mike Miller wrote: > 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.
That page documents a function that is named poorly. "is.vector" doesn't test for vectors in the sense used in most other places, it tests for a "vector of the specified mode having no attributes other than names". The page also points out a third meaning for the word, i.e. "the formal class "vector" in the methods package". So all your confusion is somewhat understandable, but it's still tiresome. Duncan Murdoch > > >>> 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 > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.