# Mapslices to tuple of vectors

#1

I have a function that maps a vector to a tuple. I would like to apply this to a matrix by rows, and get a tuple of vectors (`mapslices` gives me a vector of tuples, I tried `zip` but I could not get it working). MWE (inelegant, using the first element):

``````function maprows(f, A)
B = vec(mapslices(f, A, 1))
ntuple(i->map(x->x[i], B), length(B[1]))
end
f(x) = (x[1:2], x[3], x[4:5]) # number of elements is not necessarily 3
A = ones(10, 5)
C = maprows(f, A)
``````

Notice that `C` is a

``````Tuple{Array{Array{Float64,1},1},
Array{Float64,1},
Array{Array{Float64,1},1}}
``````

#2

What is your question? Does your `maprows` function what you expect?
A way to convert the output of mapslices to a tuple of vectors would be for example:

``````julia> maprows(f, A) = tuple(collect.(mapslices(f, A, 1))...)
maprows (generic function with 1 method)

julia> C = maprows(f, A)
(Any[[1.0, 1.0], 1.0, [1.0, 1.0]],
Any[[1.0, 1.0], 1.0, [1.0, 1.0]],
Any[[1.0, 1.0], 1.0, [1.0, 1.0]],
Any[[1.0, 1.0], 1.0, [1.0, 1.0]],
Any[[1.0, 1.0], 1.0, [1.0, 1.0]])
``````

#3

It does, the question is about doing it better (more idiomatically). The function you proposed does something completely different.