2017-10-02 16 views
1

DataFrameの各列を調べてブール値を返す関数を作りたかったので、私はブール値の配列で終わりました。ここで私はラインJulia:配列の配列の代わりに配列を返す方法はありますか?

 array = [a[1] for a in array_of_arrays] 

ビット無駄を見つける除いこれは動作するコード

# some random dataframe 
df = DataFrame([1:3, 4:6]) 

# a function that returns an array of boolean 
function some_bool_fn(df)::Array{Bool} 
    array_of_arrays = colwise(df) do sdd3 
     # for illustration only 
     return true 
    end 
    array = [a[1] for a in array_of_arrays] 
    return array 
end 

# calling the function 
some_bool_fn(dd3) 

です。基本的には配列の配列をcolwiseの出力として取得するので、配列の配列を単純な配列のboolに配置する必要がありました。このコード行を避けるためにコードを書く方法はありますか?

+2

X-REF:https://github.com/JuliaData/DataFrames.jl/commit/5f611bf480632507e15bb2c96bf39aedb71d6d06 – Gnimuc

答えて

3

@Gnimucがコメントしたように、この動作は変化しています。

マスターブランチ:https://github.com/JuliaData/DataFrames.jl/blob/master/src/groupeddataframe/grouping.jl#L241を見ると、別のバージョンが表示されます。あなたは、おそらくそれをコピーすることができます:

mycolwise(f, d::AbstractDataFrame) = [f(d[i]) for i in 1:ncol(d)] 
+0

はどのように私は、このバージョンの使用を作るのですか?それはPkg.checkout( "DataFrames") – xiaodai

+1

@xiaodai私はあなたが他の破損に苦しむ傾向があるので、そのような小さな機能(ちょうど1行のコード変更)のためにDataFramesのマスターをチェックするのは残酷だと思う。 Lisoが答えて示唆したように、あなたは別の 'colwise 'を定義したり' DataFrames.colwise'を直接上書きしたりします。 – Gnimuc

+1

@Gnimucより多くのメソッドが定義されているので、このオンライナーのみを上書きするだけでは不十分です。 DataFramesのバージョンに応じて条件付きコンパイルを行うとうまくいくかもしれません。 (どうやってこのバージョン情報を入手するの?) – Liso

関連する問題