I am using for loop that divides a large array say `arr`

and assign the subsets into arrays ` arr1, arr2.`

.

I am stuck at assigning subsets to arrays within a loop.

My whole datastet `arr`

contains 5 rows and 5 columns.

```
arr= [1 3 4 5 6;2 5 6 7 8;2 3 1 4 6 ;8 6 5 3 2;1 5 8 5 4]
```

I need to this split into `arr1, arr2, arr3`

as

```
arr1=[1 3 4 5 6;2 5 6 7 8]
arr2=[2 3 1 4 6 ;8 6 5 3 2]
arr3=[1 5 8 5 4] // remaining
```

I want to do this splitting inside loop so that the three lines get reduced to one line.

If you could provide a more concrete example it would be helpful.

As an example I will assume the array is a matrix.

```
srand(0)
using Distributions
arr = rand(100, 5)
index = Distributions.sample(1:5, 100)
output = map(group -> arr[group .== index,:], unique(index))
```

In this example `index`

is just a vector which indicates to which group the row (splitting by the first dimension) belongs to. You could use a *for loop*, but for most instances `map`

will be sufficiently efficient. I prefer `map`

to list comprehension since it will preserve the type (`Matrix`

). If you just need to perform a computation on each subset, you could calculate it on the fly or store the `Vector`

of `Matrix`

and perform the calculations afterwards.

1 Like