That doesn’t quite seem to do what you want, Mauro:

julia> arr_of_arr = Vector{Int}[[1],[2,3],[4,5]]
3-element Array{Array{Int64,1},1}:
 [1]
 [2,3]
 [4,5]

julia> vcat_nosplat(y) = eltype(y[1])[el[1] for el in y]
vcat_nosplat (generic function with 1 method)

julia> vcat_nosplat(arr_of_arr)
3-element Array{Int64,1}:
 1
 2
 4

It’s quite trivial to achieve the desired result with only a few lines of 
code, though:

julia> function vcat_nosplat2(y)
       result = Array(eltype(y[1]), 0)
       sizehint!(result, sum(map(length, y))) #skip if iterating is more 
expensive than reallcoation

       for a in y
           for x in a
               push!(result, x)
           end
       end

       result
       end
vcat_nosplat2 (generic function with 1 method)

julia> vcat_nosplat2(arr_of_arr)
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

// T

On Sunday, November 22, 2015 at 9:12:55 PM UTC+1, Mauro wrote:

In ODE.jl, I've used 
>
> vcat_nosplat(y) = eltype(y[1])[el[1] for el in y] # Does vcat(y...) 
> without the splatting 
>
> I think the eltype might not be needed.  There may be better ways though. 
>
> On Sun, 2015-11-22 at 14:04, Cedric St-Jean <cedric...@gmail.com 
> <javascript:>> wrote: 
> > I have a big vector of vectors. Is there any way to vcat/hcat them 
> without 
> > splatting? 
> > 
> > arr_of_arr = Vector[[1],[2,3],[4,5]] 
> > vcat(arr_of_arr...) 
> > 
> > I'm asking because splatting big arrays is a performance issue (and IIRC 
> it 
> > blows the stack at some point). 
>
​

Reply via email to