Glad to help! Cheers, Kevin
On Wed, Dec 25, 2013 at 8:00 PM, Sheehan Olver <[email protected]>wrote: > Ah, yes, my code was actually > > mapreduce(x->x,vcat,[f(k)' for k = 1:n]) > > Your method is a lot simpler, thanks! Didn’t know about the … syntax. > > > > On 26 Dec 2013, at 2:51 pm, Kevin Squire <[email protected]> wrote: > > > On Wed, Dec 25, 2013 at 7:20 PM, Sheehan Olver <[email protected]>wrote: > >> Suppose f(k) returns a Array{Float64,1}, and I want to construct an >> Array{Float64,2} whose kth row is f(k). What's the best way to do this? >> Right now I'm using >> >> mapreduce(x->x,vcat,[f(k) for k = 1:n]) >> >> where the point of the mapreduce is to convert the Array{Any,1} to >> Array{Float64,2}. But it seems like it should be simpler. >> > > First, it seems like f(k) returns a row vector (which is a 1xn matrix of > type Array{Float64, 2}), rather than a column vector of type Array{Float64, > 1}. Otherwise, your mapreduce code above would produce one long > Array{Float64, 1} vector. > > If f(k) actually returns a column vector, you could do > > hcat([f(k) for k = 1:n]...)' > > This concatenates the column vectors horizontally, then takes a transpose > to put each return value in a row. In my tests, that returns an > Array{Float64, 2}, even though the input is an Array{Any,1}. > > Since Julia uses column major order, you might consider *not* taking the > transpose, and leaving the return values in successive columns, rather than > successive rows. But that depends on what you're actually doing. > > Cheers, > > Kevin > > P.S. I'm testing on a recently compiled version from master. If you're > using the current release version (v0.2), there's a small chance you might > have different results, although I'm pretty sure it should be the same. > > >
