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

Uwe Ligges ligges at statistik.uni-dortmund.de
Mon Oct 18 13:01:03 CEST 2004


Achim,

you are right, in principle, but I think I'd rather expect that

   as.vector(x1mat, mode = "list")

also removes the dim attributes.


Uwe



Achim Zeileis wrote:

> 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
> 
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list