Exactly two years later seems like a good-enough time to bring this back
up. Has the situation changed here at all, maybe in a package? I've
experimented a bit and the code for doing row and column iteration at least
is absurdly simple. If multiple people would make use of it, where would be
a good place to have it?
On Monday, February 10, 2014 at 10:01:08 PM UTC-5, Spencer Russell wrote:
>
> Just realized the mapslices isn't really equivalent, as it assumes each
> iteration of the do block will return something. Perhaps there's something
> like an "iterslices"?
>
> Trying to use a function that returns nothing in mapslices throws an error:
>
> julia> m = [1 2 3; 4 5 6; 7 8 9; 10 11 12]'
> 3x4 Array{Int64,2}:
> 1 4 7 10
> 2 5 8 11
> 3 6 9 12
>
> julia> mapslices(m, 2) do v
> print(v)
> end
> 1
> 4
> 7
> 10
> ERROR: no method size(Nothing)
> in mapslices at abstractarray.jl:1619
> in mapslices at abstractarray.jl:1590
>
>
>
> On Mon, Feb 10, 2014 at 9:18 PM, Spencer Russell <[email protected]
> <javascript:>> wrote:
>
>> Often I'm using matrices as collections of vectors, for example each
>> column of the matrix is a vector.
>>
>> If I want to iterate through the vectors, I find myself doing:
>>
>> for i in 1:size(mat, 2)
>> # do stuff with mat[:, i]
>> end
>>
>> Is there a way to treat the matrix as an iterable, something like
>>
>> for v in cols(mat)
>> # do stuff with v
>> end
>>
>> or more generally
>>
>> for v in slices(mat, 2)
>> # do stuff with v
>> end
>>
>> I could use mapslices with the do notation like
>>
>> mapslices(mat, 2) do v
>> # do stuff with v
>> end
>>
>> but that creates an anon function, which I've heard is somewhat slow, is
>> that still correct?
>>
>> I'm just looking for feedback on what the most Julian thing to do here
>> is, as I find I'm doing this quite a bit in my code.
>>
>> -s
>>
>
>