# Factor variables are not vectors...

Martin Maechler Martin Maechler <maechler@stat.math.ethz.ch>
Mon, 26 Jan 1998 18:58:54 +0100

```	[diverted from R-help to R-devel;  this gets technical ...]
>>>>> "TL" == Thomas Lumley <thomas@biostat.washington.edu> writes:

TL> On Mon, 26 Jan 1998, Jim Lindsey wrote:

>> 2. Factor variables are not vectors!!
>> is.vector(gl(20,2,40)) gives FALSE

TL> Even stranger

R> is.vector(factor(1:3))# [1] FALSE
R> is.factor(factor(1:3))# [1] TRUE
R> is.vector(as.vector(factor(1:3)))# [1] TRUE
R> is.factor(as.vector(factor(1:3)))# [1] TRUE

TL> so that factor variables *can* be vectors, but aren't naturally.

and why should they, really?

(BTW, they are not either in S-plus, by the way).

In your code, shouldn't you test rather

if(!is.array(..))

-------------------

But if we are bashing on  is.vector(.):

Here is an excerpt from a mail I wrote more than 9 months ago:

##- Date: Mon, 7 Apr 97 09:33:51 +0200
##- From: Martin Maechler <maechler@stat.math.ethz.ch>
##- Cc: r-devel@stat.math.ethz.ch
##-
##- Ross>> Another reasonable definition of "vector" is !is.array(x).
##- Ross>> or possibly "isVector(x) == 1 && !is.array(x)

##- Yes, I think
##- 		isVector(x) == 1 && !is.array(x)
##-
##- is the way to go, at least for   mode = 'any'
##-
##- Now, for the 2nd argument  mode = '...' :
##- I think it should always be more restrictive, i.e.,
##- 	  is.vector(OB, mode= MODE)   <-->   is.vector(OB) &&  MODE.test(OB)
##-
##- which is not the case currently [[correcting a typo in \$RHOME/TASKS l.449-451]

is.vector(call("ls"))			#[1] FALSE --- but SHOULD be 'TRUE'
is.vector(call("ls"), mode='language')	#[1] TRUE
is.vector(call("ls"), mode='call')	#[1] FALSE

## [[here, is.vector(call("ls"), mode='any')  should really return TRUE]]

-----
Martin Maechler
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```