[R] multi-dimension array of raw

Duncan Murdoch murdoch at stats.uwo.ca
Wed Jun 21 03:00:37 CEST 2006


On 6/20/2006 6:24 PM, Gerald Jansen wrote:
> I would like to store and manipulate large sets of marker genotypes 
> compactly using "raw" data arrays. This works fine for vectors or
> matrices, but I run into the error shown in the example below as soon
> as I try to use 3 dimensional arrays (eg. animal x marker x allele).
> 
>> a <- array(as.raw(1:6),c(2,3))
>> a
>      [,1] [,2] [,3]
> [1,]   01   03   05
> [2,]   02   04   06
>> a[1,] <- raw(3)
>> a
>      [,1] [,2] [,3]
> [1,]   00   00   00
> [2,]   02   04   06
>> b <- array(as.raw(1:6),c(1,2,3))
>> b[1,,]
>      [,1] [,2] [,3]
> [1,]   01   03   05
> [2,]   02   04   06
>> b[1,1,] <- raw(3)
> Error: incompatible types (from raw to raw) in array subset assignment
> 
> I can work around this with computed indices, but I wonder if this is
> expected behaviour. 

I don't think so.  It is just an unimplemented case.

Using raw in this way is a fairly unusual thing to do, and you've come 
across a case nobody thought of implementing.

Indexing is a "primitive" function, so it's hard for you to fix this. 
It needs to be done in the internals of R (function ArrayAssign, in 
src/main/subassign.c, if you're interested).  I'll try to take a look 
and see if it looks reasonable to add.

Duncan Murdoch



More information about the R-help mailing list