# DimensionalData question

**URL:** <https://discourse.julialang.org/t/dimensionaldata-question/121846>\
**Category:** General Usage\
**Tags:** question, dimensionaldata\
**Created:** [October 28, 2024, 2:40am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846 "2024-10-28T02:40:07Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [October 28, 2024, 2:40am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/1 "2024-10-28T02:40:07Z")

</div>

How do I specify a DimArray over a subset of a dimension?  
I thought this would work but it gives an error.

```julia
Ddim = Dim{:Ddim}(['a','b','c'])

DimArray( 1:2, Ddim(['a','b']) )

```

---

<div class="post-metadata">

**Author:** ![yanwenwang24](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yanwenwang24/32/212953_2.png) [@yanwenwang24](https://discourse.julialang.org/u/yanwenwang24)\
**Post date:** [October 28, 2024, 2:53am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/2 "2024-10-28T02:53:24Z")

</div>

Create the full array first and index into it.

```julia
Ddim = Dim{:Ddim}(['a','b','c'])

arr = DimArray(1:3, Ddim)

subarr = arr[At(['a','b'])]

```

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [October 28, 2024, 2:58am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/3 "2024-10-28T02:58:32Z")

</div>

I’d like to concatenate several arrays. Something like:

```julia
cat( [
        DimArray( 1:2, Ddim(['a','b']) ),
        DimArray( 3:4, Ddim(['c','d']) ),
        DimArray( 5:6, Ddim(['e','f']) )
      ]... ,

dims= :Ddim )

```

---

<div class="post-metadata">

**Author:** ![yanwenwang24](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yanwenwang24/32/212953_2.png) [@yanwenwang24](https://discourse.julialang.org/u/yanwenwang24)\
**Post date:** [October 28, 2024, 3:25am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/4 "2024-10-28T03:25:05Z")

</div>

```julia
vcat(
    DimArray(1:2, Dim{:Ddim}(['a','b'])),
    DimArray(3:4, Dim{:Ddim}(['c','d'])),
    DimArray(5:6, Dim{:Ddim}(['e','f']))
)

```

I think this works.

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [October 28, 2024, 3:51am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/5 "2024-10-28T03:51:01Z")

</div>

when a dimension is out of order then the dimension elements get dropped on concatenation

```julia
cat(

    DimArray([1 2;3 4], ( Dim{:Ddim}(['a','d']), Dim{:Adim}(['x','y']) ) ),
    DimArray([5 6;7 8], ( Dim{:Ddim}(['b','c']), Dim{:Adim}(['x','y']) ) ),

    dims=:Ddim )

```

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [October 28, 2024, 3:57am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/6 "2024-10-28T03:57:56Z")

</div>

I think it works if the Dimension in the initial Dim arrays are also unordered

---

<div class="post-metadata">

**Author:** ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)\
**Post date:** [October 28, 2024, 7:08am UTC](https://discourse.julialang.org/t/dimensionaldata-question/121846/7 "2024-10-28T07:08:27Z")

</div>

To avoid XY problems, maybe give a little more code for context and reasons why you want to do this.
