From becker@g@be @ending from gene@com  Sun Jul  8 06:19:20 2018
From: becker@g@be @ending from gene@com (Gabe Becker)
Date: Sat, 7 Jul 2018 21:19:20 -0700
Subject: [Rd] Testing for vectors
In-Reply-To: <CABdHhvHkRcx=S5ShWkK4Y-yipX-F=xOx=8R1qm8qxeEDojrrCw@mail.gmail.com>
References: <CABdHhvF5gqJt3kDj-QuU92BWPiLWwGugxnNzOfHOHo9tp_AigA@mail.gmail.com>
 <2b0f1462-99d1-d908-5ea6-e9d21be02d11@gmail.com>
 <CABdHhvHuqb82RjNwD4US_oD1pEXLdc2C3YRYpCaV7QTYhUVB9g@mail.gmail.com>
 <CAMFmJs=Fybj+FA1anmPSsWBnak+msX5C2524G=sZ9jFOnJtCTw@mail.gmail.com>
 <CABdHhvHkRcx=S5ShWkK4Y-yipX-F=xOx=8R1qm8qxeEDojrrCw@mail.gmail.com>
Message-ID: <CAMFmJsmYxCmHx1zNQ3mgwEWA_-98rAusE3bunTKwavHYaiHDAA@mail.gmail.com>

Hadley,


On Sat, Jul 7, 2018 at 1:32 PM, Hadley Wickham <h.wickham at gmail.com> wrote:

> 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)) ?
>


Right, or even (length(dim()) == 0 || sum(dim() > 1) <= 1)

 but that is exactly my point, those two(/three) sets of things are not the
same. 1d arrays meet the second definition but not the first. Matrices and
arrays that don't meet either of yours would still meet mine. Which
definition are you proposing strictly define what a vector is?

Before we have a function which performs the test we need to actually know
what is being tested. So again I would mirror Duncan's question: What code
do you have now or are you planning to write that needs to check this, and
how would it feel about the various types of objects being discussed here?

In other words, in what cases do you actually need to strictly check if
something "is a vector"?

Another completely unrelated way to define vector, btw, is via the vector
interface (from what I recall this is roughly [, [[, length, and format
methods, though I'm probably forgetting some). This is (more or less)
equivalent to defining a vector as "a thing that can be the column of a
data.frame and have all the base-provided machinery work".

> 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?
>

Maybe. If by standard you mean commonly used/understood, though, I doubt
most R users would understand a list to be a vector. I think most people
think of atomic vectors exclusively when they hear "vector" unless they've
very specifically been trained not to do so.

Best,
~G



>
> Hadley
>
> --
> http://hadley.nz
>



-- 
Gabriel Becker, Ph.D
Scientist
Bioinformatics and Computational Biology
Genentech Research

	[[alternative HTML version deleted]]



[Rd] Testing for vectors
Gabe Becker