# Unpacking Matrix Columns as Vector Arguments

**URL:** <https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897>\
**Category:** Optimization (Mathematical)\
**Created:** [August 24, 2021, 5:32am UTC](https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897 "2021-08-24T05:32:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![danphenderson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/danphenderson/32/28317_2.png) [@danphenderson](https://discourse.julialang.org/u/danphenderson)\
**Post date:** [August 24, 2021, 5:32am UTC](https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897/1 "2021-08-24T05:32:46Z")

</div>

I am trying to unpack the columns of a matrix S into the ForwardDiff.Dual{T} constructor. I have tried numerous different approaches without success.

Specifically, I want a function that does the following:

```julia
function gAD(nlp, x, S)
	dual = Dual{DualTag}.(x, S[:, i]...) # for the i \in 1:size(S,2)
	return nlp.g!(dual, x)
end

```

I can get it working when I explicitly declare the columns, as shown with two columns below

```julia
function gAD(nlp, x, S)
	dual = Dual{DualTag}.(x, S[1, :], S[2,:] ) 
	return nlp.g!(dual, x)
end

```

Thank you in advance for your insight into the problem I am facing!

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [August 24, 2021, 6:12am UTC](https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897/2 "2021-08-24T06:12:00Z")

</div>

> [@danphenderson](#):
>
> `dual = Dual{DualTag}.(x, S[:, i]....)`

```Julia
dual = Dual{DualTag}.(x, [S[:, i] for i in 1:size(S, 2)]....)

```

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [August 24, 2021, 6:42am UTC](https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897/3 "2021-08-24T06:42:26Z")

</div>

Have you considered `eachcol`?

```julia
Dual{DualTag}.(x, eachcol(S)....)

```

---

<div class="post-metadata">

**Author:** ![danphenderson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/danphenderson/32/28317_2.png) [@danphenderson](https://discourse.julialang.org/u/danphenderson)\
**Post date:** [August 24, 2021, 5:45pm UTC](https://discourse.julialang.org/t/unpacking-matrix-columns-as-vector-arguments/66897/4 "2021-08-24T17:45:04Z")

</div>

Great both solutions work, with a minor update - there is an extra period in the “splat” for both solutions, arising from a previous typo in my questions. Thanks.
