Julia:How 根据具有特定值的类型字段访问类型数组中的元素
Julia:How to access an element in an array of a type based on the type field with specific value
我有一个自定义类型的数组,叫做links
,它的元素是Link
.
类型
type Link
first::Int64
second::Int64
value::Array{Float64,1}
end
,而且对于 links
,typeof(links)
是 Vector{Link}
。
您可能已经猜到了,这是我的图形定义的一部分,其中包括边,first
指一个端点,second
指另一个端点。我想做的是 select link
in links
的 value
其中端点 first
等于特定节点号,让我们调用它 vertex_id
。
所以简而言之,我想要以下内容:
value of all those in links, whose .first == vertex_id
.
P.S,我知道对于常规类型的 DataFrame,我可以说
df[df[:col1] .== x,:col2]
但是对于自定义类型的数组有类似的方法吗?
.
广播语法:getfield
将是另一种选择(可能更类似于您可以使用 DataFrames 执行的操作):
getfield.(links,[:value])[getfield.(links, [:first]).==vertex_id]
但是您建议的列表理解解决方案可能更优雅。
[x.value for x in links if x.first == vertex_id]
我意识到我可以理解:
[x.value for x in links if x.first == vertex_id]
我有一个自定义类型的数组,叫做links
,它的元素是Link
.
type Link
first::Int64
second::Int64
value::Array{Float64,1}
end
,而且对于 links
,typeof(links)
是 Vector{Link}
。
您可能已经猜到了,这是我的图形定义的一部分,其中包括边,first
指一个端点,second
指另一个端点。我想做的是 select link
in links
的 value
其中端点 first
等于特定节点号,让我们调用它 vertex_id
。
所以简而言之,我想要以下内容:
value of all those in links, whose .first == vertex_id
.
P.S,我知道对于常规类型的 DataFrame,我可以说
df[df[:col1] .== x,:col2]
但是对于自定义类型的数组有类似的方法吗?
.
广播语法:getfield
将是另一种选择(可能更类似于您可以使用 DataFrames 执行的操作):
getfield.(links,[:value])[getfield.(links, [:first]).==vertex_id]
但是您建议的列表理解解决方案可能更优雅。
[x.value for x in links if x.first == vertex_id]
我意识到我可以理解:
[x.value for x in links if x.first == vertex_id]