# Sums of a ragged array

**URL:** <https://discourse.julialang.org/t/sums-of-a-ragged-array/11246>\
**Category:** General Usage\
**Created:** [May 29, 2018, 6:05pm UTC](https://discourse.julialang.org/t/sums-of-a-ragged-array/11246 "2018-05-29T18:05:35Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [May 29, 2018, 6:05pm UTC](https://discourse.julialang.org/t/sums-of-a-ragged-array/11246/1 "2018-05-29T18:05:35Z")

</div>

I have a ragged array in the form of a vector of values, `vals`, and a corresponding vector of indices, `ind`. Both of these vectors are of length `n`. The elements of `ind` are in the range `1:k`.

I want to increment a `k`-vector of sums, `sums`, with the values of `vals` according to `inds`, as in

```julia
for (v, i) in zip(vals, inds)
    sums[i] += v
end

```

Is there a `sum` method like this?

Writing this out explicitly is obviously not very difficult but I have the feeling that I am missing an abstraction here.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [May 30, 2018, 12:52am UTC](https://discourse.julialang.org/t/sums-of-a-ragged-array/11246/2 "2018-05-30T00:52:32Z")

</div>

```julia
sums += vals[invperm(inds)]

```

should do it.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [May 31, 2018, 1:06pm UTC](https://discourse.julialang.org/t/sums-of-a-ragged-array/11246/3 "2018-05-31T13:06:23Z")

</div>

I’m afraid that won’t work because `inds` is not necessarily a permutation. In most cases `k < n`.

I ended up creating a `RaggedArray` struct with the two fields (is the terminology “properties”, as in `getproperty` and `setproperty!`, now?) and defining the sum method on that.
