2017-10-26 8 views
4

重要なメタデータを属性としてRオブジェクトに格納します。私はワークフローをJuliaに移行したいと思っています。Juliaがアクセスできるものとして属性を少なくとも一時的に表現する方法を探しています。次に、RDataパッケージを実際のオブジェクトの属性でこのデータ構造体を埋めるように拡張することについて考え始めることができます。Rオブジェクトの属性に対するJuliaの最善の近似は何ですか?

私は、DataFrameのラベルやユニットなどの注釈を付けていることを理解しています。オブジェクトの属性の最も重要な使用はおそらくDataFramesパッケージ(https://github.com/JuliaData/DataFrames.jl/issues/35)に実装されていると思います。しかし、私は、この特定のユースケースに依存しない、より一般的な解決法について尋ねています。興味がある人々のために


、ジュリアでhere is a related discussion in the RData package

+1

のような属性を実装する計画があるとは思いません私はdata.tableにアトリビュートをつけようとしましたが、テーブルをいくつかのdplyr動詞に入れた後にアトリビュートが消去されていることが分かりました。私はジュリアであなたは自分の構造体を定義するだけでいいと思う。 – xiaodai

+0

「braindead」の解決策は、シンボルをキーとして取り込む「メタデータ」と呼ばれるグローバルDictを導入することです。 –

答えて

4

あなた自身のタイプを定義することideomaticです - あなたは、単に属性を格納するタイプのフィールドを作ると思います。 Rでは、物事を属性として格納するのは、型の送出方法に影響を与えないことです。 Vectorにメタデータを追加しても、Vectorのように動作しなくなります。ジュリアでは、そのアプローチはもう少し複雑です。タイプhttps://docs.julialang.org/en/latest/manual/interfaces/#man-interface-array-1のためにAbstractVectorインターフェイスを定義して、ベクトルのように動作させる必要があります。

本質的に、これは、ワークフローのソリューションが少し異なることを意味します。多くの場合、Rの属性メタデータは、関数から返されたときにメタデータをオブジェクトに関連付けるために使用されます。ジュリアに似た何かをする簡単な方法は、関数はタプルを返し、タプルに結果を代入することです。

function ex() 
    res = rand(5) 
    met = "uniformly distributed random numbers" 
    res, met 
end 

result, metadata = ex() 

私はR.

+4

このような計画はありません。属性はハックの最悪です。 –

関連する問題