Re: [Rd] is.vector(as.vector(x)) is FALSE

From: Achim Zeileis <>
Date: Mon 18 Oct 2004 - 20:38:30 EST

On Sun, 17 Oct 2004 01:51:47 +0000 (UTC) Gabor Grothendieck wrote:

> The following, which was recently discussions on the rcom-l list,
> is a situation where coercing x1mat to a vector using as.vector
> results in an object that is.vector says is not a vector:
> R> x1mat<-matrix(list(1,1.1,1+1i,"a",NA,NaN), 3, 2)
> R> is.vector(as.vector(x1mat))
> [1] FALSE
If you give it a particular mode, it produces a vector:

R> as.vector(x1mat, mode = "character")
[1] "1"    "1.1"  "1+1i" "a"    "NA"   "NaN" 
R> as.vector(x1mat, mode = "numeric")

[1] 1.0 1.1 1.0 NA NA NaN
Warning messages:
1: imaginary parts discarded in coercion 2: out-of-range values treated as 0 in coercion to raw

A somewhat similar and simpler example is:

R> x <- data.frame(a = 1:5, b = 6:10)
R> is.vector(as.vector(x))
[1] FALSE because data.frames are also already vectors of mode "list". The man page of as.vector provides a similar example with:

R> as.vector(x, mode = "numeric")
Error in as.vector(x, mode = "numeric") : (list) object cannot be coerced to double

I had discussed this with Kurt (and maybe R-devel, but I cannot find it in the archives) some time ago and the bottom line--if I recall correctly--was that is.vector() and as.vector() do not behave in the way that is.vector(as.vector(x)) always gives TRUE (or an error).

Z mailing list Received on Mon Oct 18 20:43:01 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:37 EST