In the writing process of Julia function, we need to input n as the parameter,that is `function abc(data,f,n,...)`

.I have a data matrix, and I’m going to divide the data matrix into n parts according to index f,How do I declare n matrices and then block them by the index?

What do you mean by “block them by the index”? I am not sure if you are providing sufficient information about what you want to achieve to allow us to understand the problem.

That is, the index Matrix f containing the index vector,Each column of f contains the different index values,Then divide the data according to the index value of each column in f

To second @Henrique_Becker, what you are trying to do is still unclear.

Generally, in Julia you do not need to declare variables.

…

Ok, `f`

is then a matrix of vectors of indexes? Like `f :: Array{Vector{Int}, 2}`

? Something like that? Or did you `vector`

wrong and you just meant a matrix of ints? (`f :: Array{Int, 2}`

)

Here it seems like it is just a matrix of Ints.

Let me just check if I understood, you want something like that?

```
data = [1 2 3; 4 5 6; 7 8 9]
f = [1 1 2; 2 2 3; 3 3 1]
result = abc(data, f, 3, ...)
result == (
[1 2 0; 0 0 0; 0 0 9],
[0 0 3; 4 5 0; 0 0 0],
[0 0 0; 0 0 6; 7 8 0],
)
```

Or `missing`

instead of zero, I do not know.

Yes, but f needs input, so I don’t know how to declare an unknown number of matrices

I need to apply a loop to deal with these matrices, so it’s necessary to define a new matrix

As already mentioned, it’s not at all clear what you want. Was the case posted above what you’re looking for? If not, it would help if you wrote a set of example inputs and the desired output yourself.

Yes, but f needs input, so I don’t know how to declare an unknown number of matrices

Not quite sure what you mean too, but, in general:

-If you want to pass an arbitrary number of Matrices to a function, use the `...`

-operator, like in

`abc(f::Array,n::Integer,data::Matrix...)`

which will allow any number of Matrices to be passed to `abc(...)`

after `f`

and `n`

-If you want to return an unknown number of matrices, I recommend returning a Vector of Matrices, example:

```
thisManyMatrices=4
returnArray=Vector{Matrix{Float64}}(undef,thisManyMatrices)
for i in eachindex(returnArray)
returnArray[i]=....
end
return returnArray
```

Input or output? Do you mean the `data`

argument will be many matrices? Then just use a `Vector`

of matrices and pass it as `data`

. Or you mean that `abc`

will return many matrices and you need to declare them inside `abc`

? If that is the case, compute the number of matrices you need to return and create a `Vector`

of the right size to store them, fill it by a loop, and return this new `Vector`

.

I am not sure how one things leads to the other.