我正在尝试从数据框中删除一些列,并且不希望返回修改后的数据框并将其重新分配给旧数据框。相反,我希望该函数只修改数据框。这是我尝试过的,但它似乎并没有做我所除外的事情。我的印象是参数是作为参考传递的,而不是按值传递的?
function remove_cols! (df::DataFrame, cols)
df = df[setdiff(names(df), cols)];
end
df = DataFrame(x = [1:10], y = [11:20]);
remove_cols!(df, [:y]); # this does not modify the original data frame
当然,下面的方法有效,但我更喜欢如果remove_cols!
刚刚改变了 df
df = remove_cols!(df, [:y]);
如何更改函数内的 df ?
Thanks!
据我了解,Julia 它使用所谓的共享传递,这意味着引用是按值传递的。因此,当您将 DataFrame 传递给函数时,会创建对该函数本地的 DataFrame 的新引用。当您重新分配本地df
变量有自己对 DataFrame 的引用,它对单独的全局变量及其对 DataFrame 的单独引用没有影响。
有一个DataFrames.jl 中的函数 https://github.com/JuliaStats/DataFrames.jl/blob/master/src/dataframe/dataframe.jl#L594用于删除 DataFrame 中的列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)