Julia:如何基于具有特定值的类型字段访问类型数组中的元素

时间:2017-01-26 11:09:20

标签: types julia compositetype

我有一个自定义类型的数组,名为links,其元素的类型为Link

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

,而且对于linkstypeof(links)Vector{Link}

您可能已经猜到,这是我拥有的图表定义的一部分,其中包括边缘,first表示一个端点,second表示另一个端点。我想要做的是在value中选择link links,其中端点first等于特定节点编号,让我们称之为{{1} }}。 所以简而言之,我想要以下内容:

vertex_id

P.S,我知道对于常规类型的DataFrame,我可以说

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

但对于自定义类型的数组有没有类似的方法呢?

2 个答案:

答案 0 :(得分:3)

.广播语法:getfield将是另一种选择(可能更类似于您可以使用DataFrames做的事情):

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

但是你建议的列表理解解决方案可能更优雅。

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

答案 1 :(得分:0)

我意识到我可以做到理解:

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