On Thu, 25 Dec 2014, peter dalgaard wrote:


On 25 Dec 2014, at 08:15 , Mike Miller <mbmille...@gmail.com> wrote:


"is.vector returns TRUE if x is a vector of the specified mode having
no attributes other than names. It returns FALSE otherwise."

So that means that a vector in R has no attributes other than names.

Wrong. Read carefully. There are

- vectors
- vectors having no attributes other than names

You are right.  I was being difficult about the meaning of "is.vector()".

But would you also say that a matrix is a vector?

I was going to ask a question about it how to test that an object is a vector, but then I found this:

"is.vector() does not test if an object is a vector. Instead it returns TRUE only if the object is a vector with no attributes apart from names. Use is.atomic(x) || is.list(x) to test if an object is actually a vector."

From here:

http://adv-r.had.co.nz/Data-structures.html#vectors

a <- c(1,2,3,4)

names(a) <- LETTERS[1:4]

attr(a, "vecinfo") <- "yes, I'm a vector"

a
A B C D
1 2 3 4
attr(,"vecinfo")
[1] "yes, I'm a vector"

attributes(a)
$names
[1] "A" "B" "C" "D"

$vecinfo
[1] "yes, I'm a vector"

is.vector(a)
[1] FALSE

is.atomic(a) || is.list(a)
[1] TRUE

But then we also see this:

b <- matrix(1:4, 2,2)

is.atomic(b) || is.list(b)
[1] TRUE


"It is common to call the atomic types ‘atomic vectors’, but note that is.vector imposes further restrictions: an object can be atomic but not a vector (in that sense)."

https://stat.ethz.ch/R-manual/R-devel/library/base/html/is.recursive.html

I think a matrix is always atomic. So a matrix is "not a vector (in that sense)," but "is.matrix returns TRUE if x is a vector and has a 'dim' attribute of length 2."

I do think I get what is going on with this, but why should I buy into this conceptualization? Why is it better to say that a matrix *is* a vector than to say that a matrix *contains* a vector? The latter seems to be the more common way of thinking but such things. Even in R you've had to construct two different definitions of "vector" to deal with the inconsistency created by the "matrix is a vector" way of thinking. So there must be something really good about it that I am not understanding (and I'm not being facetious or ironic!)

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.

Reply via email to