On Tuesday, March 31, 2015 at 10:12:26 PM UTC-4, James Fairbanks wrote:
>
> Relevant source code from DataArrays.jl/src/datavector.jl
>
> # TODO: should this be an AbstractDataVector, so it works with PDV's?
> function Base.map(f::Function, dv::DataVector)
>     n = length(dv)
>     res = DataArray(Any, n) #<-- this Any is the cause.
>     for i in 1:n
>         res[i] = f(dv[i])
>     end
>     return res
> end
>
>
> the map function allocates the result as a DataArray(Any, n). If you know 
> the output type of f is T, then you can use 
>
> function map!(f::Function, res::DataArray, dv::DataVector)
>     n = length(dv)
>     for i in 1:n
>         res[i] = f(dv[i])
>     end
>     return res
> end
>
> n = length(dv)
> res = DataArray(T, n)
> map!(f, res, dv)
>
>
>
Thank you, this is very helpful. 

Reply via email to