Pointers 通过引用合并数据帧,而不是复制

Pointers 通过引用合并数据帧,而不是复制,pointers,dataframe,julia,Pointers,Dataframe,Julia,在Julia中,可以组合数据帧: d1 = DataFrame(A=1:10) d2 = DataFrame(A=11:20) d3 = [d1; d2] 然而,这似乎是将d1、d2复制到d3中。我不想复制它们。如果您对d1进行了修改,它不会反映在d3中 有人知道如何通过引用而不是通过值来组合它们,这样,如果d1被修改,变化会反映在d3中吗 谢谢 在数组类型术语中,您希望d1和d2成为d3中数据的视图。这在数据帧中也是可能的: julia> using DataFrames juli

在Julia中,可以组合数据帧:

d1 = DataFrame(A=1:10)
d2 = DataFrame(A=11:20)

d3 = [d1; d2]
然而,这似乎是将d1、d2复制到d3中。我不想复制它们。如果您对d1进行了修改,它不会反映在d3中

有人知道如何通过引用而不是通过值来组合它们,这样,如果d1被修改,变化会反映在d3中吗


谢谢

在数组类型术语中,您希望
d1
d2
成为
d3
中数据的视图。这在数据帧中也是可能的:

julia> using DataFrames

julia> d3 = DataFrame(A=1:20);

julia> d1 = view(d3,1:10);

julia> d2 = view(d3,11:20);

julia> d1[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 2 │
│ 3   │ 3 │

julia> d3[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 2 │
│ 3   │ 3 │

julia> d1[1,:A] = 999
999

julia> d3[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A   │
├─────┼─────┤
│ 1   │ 999 │
│ 2   │ 2   │
│ 3   │ 3   │

当然,您可能希望先创建
d1
d2
,然后将它们组合到
d3
,但这需要一个复制操作(使列在内存中连续)。之后,您可以生成视图(并将它们指定给
d1
d2
)。建议对视图使用不同的变量,因为更改
d1
d2
的类型可能会导致类型不稳定(Julia中不好)。

对于阵列,有CatViews.jl包可以满足OP的要求,但它似乎不适用于DataFrame这与我所寻找的答案不完全一样,但它需要对我的代码进行重大的重构,所以我接受这个答案。