# Appending a vector to a vector of vectors

**URL:** <https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461>\
**Category:** General Usage\
**Tags:** vector\
**Created:** [December 21, 2021, 11:42pm UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461 "2021-12-21T23:42:40Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![alan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alan/32/15970_2.png) [@alan](https://discourse.julialang.org/u/alan)\
**Post date:** [December 21, 2021, 11:42pm UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/1 "2021-12-21T23:42:40Z")

</div>

I’m trying to create an empty vector of vectors and then append vectors to it so that I end up with a ragged array. What is wrong with this code?

```julia
julia> a = Vector{Vector{Int}}[]
Vector{Vector{Int64}}[]

julia> x = [1,2]
2-element Vector{Int64}:
 1
 2

julia> append!(a, copy(x))
ERROR: MethodError: Cannot `convert` an object of type Int64 to an object of type Vector{Vector{Int64}}

```

Thanks

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [December 21, 2021, 11:56pm UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/2 "2021-12-21T23:56:04Z")

</div>

```julia
julia> a = Vector{Int}[]
Vector{Int64}[]

julia> push!(a, [1,2]);

julia> a
1-element Vector{Vector{Int64}}:
 [1, 2]

```

* * *

> [@alan](#):
>
> `julia> a = Vector{Vector{Int}}[]`

this is a Vector of `Vector{Vector{Int}}`, not a Vector of Vector. In order to add a single element to the collection, you want to use `push!()` not `append!()`

* * *

lastly, I would recommend using: [GitHub - JuliaArrays/ArraysOfArrays.jl: Efficient storage and handling of nested arrays in Julia](https://github.com/JuliaArrays/ArraysOfArrays.jl) if your code is performance critical

---

<div class="post-metadata">

**Author:** ![roflmaostc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roflmaostc/32/30123_2.png) [@roflmaostc](https://discourse.julialang.org/u/roflmaostc)\
**Post date:** [December 21, 2021, 11:57pm UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/3 "2021-12-21T23:57:35Z")

</div>

What you created is a

```julia
julia> x = Vector{Vector{Int64}}[]
Vector{Vector{Int64}}[]

julia> typeof(x)
Vector{Vector{Vector{Int64}}} (alias for Array{Array{Array{Int64, 1}, 1}, 1})

```

So one `Vector` too much.

---

<div class="post-metadata">

**Author:** ![alan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alan/32/15970_2.png) [@alan](https://discourse.julialang.org/u/alan)\
**Post date:** [December 22, 2021, 1:04am UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/4 "2021-12-22T01:04:11Z")

</div>

I want to end up with a ragged array like:

```julia
[[1,2],[3,4,5]]
2-element Vector{Vector{Int64}}:
 [1, 2]
 [3, 4, 5]

```

But starting with an empty array and pushing one vector at a time.

---

<div class="post-metadata">

**Author:** ![alan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alan/32/15970_2.png) [@alan](https://discourse.julialang.org/u/alan)\
**Post date:** [December 22, 2021, 1:06am UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/5 "2021-12-22T01:06:48Z")

</div>

That solves the problem:

```julia
julia> a = Vector{Vector{Int}}()
Vector{Int64}[]

julia> typeof(a)
Vector{Vector{Int64}} (alias for Array{Array{Int64, 1}, 1})

julia> push!(a, [1,2])
1-element Vector{Vector{Int64}}:
 [1, 2]

```

I needed “()” rather than “”. Thanks.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [December 22, 2021, 1:26am UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/6 "2021-12-22T01:26:35Z")

</div>

just continue with my example?

```julia
julia> a = Vector{Int}[]
Vector{Int64}[]

julia> push!(a, [1,2]);

julia> a
1-element Vector{Vector{Int64}}:
 [1, 2]

julia> push!(a, [1,2,3]);

julia> a
2-element Vector{Vector{Int64}}:
 [1, 2]
 [1, 2, 3]

```

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [December 22, 2021, 1:27am UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/7 "2021-12-22T01:27:59Z")

</div>

> [@alan](#):
>
> `a = Vector{Vector{Int}}()`

this is same as `a = Vector{Int}[]`, because:

```julia
T[]

```

is equivalent to:

```julia
Vector{T}()

```

---

<div class="post-metadata">

**Author:** ![alan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alan/32/15970_2.png) [@alan](https://discourse.julialang.org/u/alan)\
**Post date:** [December 22, 2021, 3:14am UTC](https://discourse.julialang.org/t/appending-a-vector-to-a-vector-of-vectors/73461/8 "2021-12-22T03:14:13Z")

</div>

Much cleaner. Thank you.
