2017-01-26 1 views
0

linksと呼ばれる要素の型がLinkの自己定義型の配列があります。Julia:特定の値を持つ型フィールドに基づいた型の配列内の要素にアクセスする方法

type Link 
    first::Int64 
    second::Int64 
    value::Array{Float64,1} 
end 

、しかもlinksため、typeof(links)Vector{Link}あります。

これは私が持っているエッジ定義を含むグラフ定義の一部であり、firstは1つのエンドポイントを指し、secondは別のエンドポイントを指します。私がしたいのはのvaluelinksに選択し、エンドポイントfirstが特定のノード番号と等しい場合は、としましょう。 短いので、私は次のようにしたい:

value of all those in links, whose .first == vertex_id

P.S、私は通常のタイプのデータフレームのために、私は

df[df[:col1] .== x,:col2] 

を言うことができる。しかし、自己定義型の配列のためにこれを行うには、同様の方法があることを知っていますか?

+0

私は内包表記を行うことができますことに気づい: '[リンクにおけるxのx.value場合x.first == vertex_id]' これを行うには良い方法がありますか? –

+1

リストの理解は確かにあなたの最善の策です。それはそれよりはるかに簡潔で、効率的で、エレガントではありません。 –

答えて

0

私が内包表記を行うことができますことに気づい:

[x.value for x in links if x.first == vertex_id] 
3

.はして構文を放送:getfieldは別のオプション(あなたがデータフレームで何ができるかにおそらくより類似している)のようになります。

getfield.(links,[:value])[getfield.(links, [:first]).==vertex_id]

しかし、あなたは提案リストの内包ソリューションは、おそらくよりエレガントです。

[x.value for x in links if x.first == vertex_id]

関連する問題