Hadassa Brunschwig <dassybr <at> gmail.com> writes:
>
> Hi R-users!
>
> I am trying to create a what I call inflated array (maybe there is
> already some other name for that). It is an array that changes
> dinamically its dimensions, e.g. the higher the number of third
> dimensions, the more rows in the array.
base R doesn't have a data structure for this: arrays in R
must not be "ragged" (i.e., every sub-array must have the
same dimensions).
So you would need to use a list of matrices in your
example. I don't quite know the logic that you're using
to decide what goes in each sub-table.
The basic example you give could be built
by hand as follows:
list(1:4,matrix(5:12,byrow=TRUE,ncol=4),
matrix(13:24,byrow=TRUE,ncol=4))
if you had used scan() or something else to
get a long, flat vector (x) and also had
a vector (v) that indicated the number of
rows in each sub-table:
x <- 1:24
nrow <- c(1,2,3)
ncol <- 4
ind <- rep(1:length(nrow),ncol*nrow)
lapply(split(x,ind),
matrix,ncol=ncol,byrow=TRUE)
seems to work.
cheers
Ben Bolker