如果数组中有复杂的记录,最好使用dataframes.jl。将数组放入数据帧中,然后连接,然后使用数组构造函数提取。
如果您确切地知道左连接的逻辑将始终是什么,那么您应该能够有效地使用列表理解。不过,在通用左连接的逻辑级别上,最好使用数据帧。
julia> using DataFrames
julia> names = DataFrame(ID = [20, 40], Name = ["John Doe", "Jane Doe"])
2Ã2 DataFrames.DataFrame
â Row â ID â Name â
âââââââ¼âââââ¼âââââââââââ¤
â 1 â 20 â John Doe â
â 2 â 40 â Jane Doe â
julia> jobs = DataFrame(ID = [20, 40], Job = ["Lawyer", "Doctor"])
2Ã2 DataFrames.DataFrame
â Row â ID â Job â
âââââââ¼âââââ¼âââââââââ¤
â 1 â 20 â Lawyer â
â 2 â 40 â Doctor â
julia> arr = Array(join(names, jobs, on = :ID, kind = :left))
2Ã3 Array{Any,2}:
20 "John Doe" "Lawyer"
40 "Jane Doe" "Doctor"
…或
julia> n = Array(names)
2Ã2 Array{Any,2}:
20 "John Doe"
40 "Jane Doe"
julia> j = Array(jobs)
2Ã2 Array{Any,2}:
20 "Lawyer"
40 "Doctor"
julia> [ [n[i,2], j[i,2]] for i in 1:size(n)[1] if n[i,1] == j[i,1]]
2-element Array{Array{String,1},1}:
String["John Doe", "Lawyer"]
String["Jane Doe", "Doctor"]