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. Gerald Jansen
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
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.This is now fixed in r-devel and r-patched. Duncan Murdoch