This runs fine for me, running Version 0.3.0-prerelease (2014-02-28 04:44 UTC):
f(i,j) = [i,j] n=3; m=2 a = [f(i, j) for i in 1:n, j in 1:m] Out[91]: 3x2 Array{Any,2}: [1,1] [1,2] [2,1] [2,2] [3,1] [3,2] On Monday, March 24, 2014 10:07:49 AM UTC-4, Linus Mellberg wrote: > > Hi! > > I'm trying to construct a 3 dimensional array from a number of 1 > dimensional arrays. Essentially what i would like to do is > > a = [f(i, j) for i in 1:n, j in 1:m] > > where f(i, j) is a function that returns an array (note, f has to > construct the entire array at the same time). The code above creates a > 2-dimensional array of arrays, but I would like to get a 3-dimensional > array with the arrays returned by f in the first dimension with i and j in > the second and third dimension, hope you understand > > a[:,:,1] = [f(1,1) f(2,1) ... f(n,1)] > a[:,:,2] = [f(1,2) f(2,2) ... f(n,2)] > . > . > . > a[:,:,m] = [f(1,m) f(2,m) ... f(n,m)] > > f(i,j) are column arrays above. > > It can be achieved by first creating the large matrix and then filling it > > a = zeros(Int64, k, n, m) > for i in 1:n, j in 1:m > a[:,i,j] = f(i,j) > end > > Is this the only way? I find it sort of ugly when its usually possible to > do nice construction using comprehensions in other cases. > >