On Sat, Jul 7, 2018 at 12:54 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:> On 07/07/2018 1:20 PM, Hadley Wickham wrote: >> >> Hi all, >> >> Is there are base function that I've missed that tests if an object is >> a vector in the dimensionality sense, rather than the data structure >> sense? i.e. something that checks is.null(dim(x)) ? >> >> is.vector() is trivially disqualified since it also checks for the >> presence of non-names attributes: >> >> x <- factor(c("a", "a", "b")) >> is.vector(x) >> #> [1] FALSE >> >> is.null(dim(x)) >> #> [1] TRUE >> > > I don't know of one. I can't think of nontrivial cases where that > distinction matters; do you know of any where base functions act differently > on vectors and 1D arrays? (A trivial example is that dimnames(x) gives > different results for a named vector and an array with dimnames.)I was thinking primarily of completing the set of is.matrix() and is.array(), or generally, how do you say: is `x` a 1d dimensional thing? (I don't have any feel for whether the check should be is.null(dim(x)) vs. length(dim(x)) <= 1) Hadley -- http://hadley.nz
Hadley,> I was thinking primarily of completing the set of is.matrix() and > is.array(), or generally, how do you say: is `x` a 1d dimensional > thing? >Can you clarify what you mean by dimensionality sense and specifically 1d here? You can have a 1d array which is different from what your proposed function would call a vector. So is.null(dim(x)) doesn't seem the same as 1d, right?> x = array(1:10)> x[1] 1 2 3 4 5 6 7 8 9 10> class(x)[1] "array"> dim(x)[1] 10> dim(1:10)NULL You can also have an n x 1 matrix, which *technically* has 2 dimensions but conceptually is equivalent to a 1d array and/or a vector. Also, are you including lists in your conceptions of 1d vector here? I'm with Duncan here, in that i'm having trouble understanding exactly what you want to do without a bit more context. Best, ~G> > (I don't have any feel for whether the check should be is.null(dim(x)) > vs. length(dim(x)) <= 1) > > Hadley > -- > http://hadley.nz > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >-- Gabriel Becker, Ph.D Scientist Bioinformatics and Computational Biology Genentech Research [[alternative HTML version deleted]]
On Sat, Jul 7, 2018 at 1:50 PM, Gabe Becker <becker.gabe at gene.com> wrote:> Hadley, > >> >> I was thinking primarily of completing the set of is.matrix() and >> is.array(), or generally, how do you say: is `x` a 1d dimensional >> thing? > > > Can you clarify what you mean by dimensionality sense and specifically 1d > here?What do we call a vector that is not an array? (or matrix) What do we call an object that acts 1-dimensional? (i.e. has length(dim()) %in% c(0, 1)) ?> You can also have an n x 1 matrix, which technically has 2 dimensions but > conceptually is equivalent to a 1d array and/or a vector.Yes. You can also have array that's n x 1 x 1.> Also, are you including lists in your conceptions of 1d vector here? I'm > with Duncan here, in that i'm having trouble understanding exactly what you > want to do without a bit more context.Isn't it standard terminology that a vector is the set of atomic vectors + list? Hadley -- http://hadley.nz