[R] making array of lists

Gabor Grothendieck ggrothendieck at gmail.com
Tue Mar 4 02:41:29 CET 2008


Try this:

> a <- 1:2
> b <- 1:3
> g <- array(do.call(c, apply(expand.grid(a = a, b = b), 1, list)),
+    dim = c(length(a), length(b)))
> g
     [,1]      [,2]      [,3]
[1,] Integer,2 Integer,2 Integer,2
[2,] Integer,2 Integer,2 Integer,2
> g[[2,3]]
a b
2 3


On Mon, Mar 3, 2008 at 8:21 PM, Vadim Organovich
<vogranovich at jumptrading.com> wrote:
> Dear R Users,
>
>
>
> Given two vectors, say a = seq(2) and b = seq(3), I want to make an 2*3 array, where (i,j) element is list(a=a[i], b=b[j]). I tried the outer() function but it generates an error message that I don't understand, see below.
>
>
>
> What do I do wrong?
>
>
>
> The expan.grid function is not good enough since I need a solution that works when a and b are not atomic, say a=list(list(x=1, y=2), list(x=2, y=1)).
>
>
>
> Thanks,
>
> Vadim
>
>
>
> > a <- seq(2); b <- seq(3)
> > outer(a, b, function(a, b) list(a=a, b=b))
> Error in dim(robj) <- c(dX, dY) :
>  dims [product 6] do not match the length of object [2]
>
>
>
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list