2017-08-01 1 views
1

DataArrays.DataArray {String}のisnaのブロードキャストを修正/許可する方法はありますか? 0.5オンisnaをブロードキャストできません。 DataArrays.DataArray {String}の場合

julia> using DataFrames 
julia> [email protected](["1776", "1895", " 0", " 1774", NA ]) 
5-element DataArrays.DataArray{String,1}: 
"1776" 
"1895" 
" 0" 
" 1774" 
NA  

julia> isna.(a) 
ERROR: MethodError: Cannot `convert` an object of type Bool to an object of type String 
This may have arisen from a call to the constructor String(...), 
since type constructors fall back to convert methods. 
in macro expansion at /home/ngphuoc/.julia/v0.5/DataArrays/src/broadcast.jl:60 [inlined] 
in macro expansion at ./cartesian.jl:64 [inlined] 
in (::DataArrays.#_F_#203)(::DataArrays.DataArray{String,1}, ::DataArrays.DataArray{String,1}) at /home/ngphuoc/.julia/v0.5/DataArrays/src/broadcast.jl:130 
in broadcast!(::Function, ::DataArrays.DataArray{String,1}, ::DataArrays.DataArray{String,1}) at /home/ngphuoc/.julia/v0.5/DataArrays/src/broadcast.jl:229 
in databroadcast(::Function, ::DataArrays.DataArray{String,1}, ::Vararg{DataArrays.DataArray{String,1},N}) at /home/ngphuoc/.julia/v0.5/DataArrays/src/broadcast.jl:235 
in broadcast(::Function, ::DataArrays.DataArray{String,1}) at /home/ngphuoc/.julia/v0.5/DataArrays/src/broadcast.jl:296 
in eval_user_input(::Any, ::Base.REPL.REPLBackend) at ./REPL.jl:64 
in macro expansion at ./REPL.jl:95 [inlined] 
in (::Base.REPL.##3#4{Base.REPL.REPLBackend})() at ./event.jl:68 
+2

このコードは私のシステム(julia 0.6)で動作します - どのジュリアバージョンを使用していますか? –

答えて

1

を、DataArraysが誤っbroadcastの結果の要素タイプは、単にプロモーションの規則に従うことを前提としています私はそうしようとすると、次のエラーを得ました。このバグは0.6から修正されています。更新は、あなたの最善の行動コースです。

もちろん、0.5では、古いベクトル化isnaメソッドがまだ存在します。それはおそらく今のところそこにとどまっていなければならないなら、おそらくあなたの最善の選択です。これ以降、0.6のブロードキャストのために、非推奨になっています(isna.(a))。

julia> isna(a) 
5-element BitArray{1}: 
false 
false 
false 
false 
    true 
関連する問題