【问题标题】:Julia - "UndefRefError: access to undefined reference" when creating DataFrameJulia - 创建 DataFrame 时出现“UndefRefError:访问未定义的引用”
【发布时间】:2019-06-19 12:59:48
【问题描述】:

我正在尝试创建一个具有 1 行和 10 列的空 DataFrame。在 Julia 0.5 中我曾经这样做:df = DataFrame(Any,1,10)

当我尝试在 Julia 1.1.1 中执行此操作时,我收到此警告

Warning: 'DataFrame(t::Type, nrows::Integer, 
ncols::Integer)' is deprecated, use 
'DataFrame(Matrix{t}(undef, nrows, ncols))' 
instead.

和错误:

ERROR: LoadError: UndefRefError: access to undefined reference
Stacktrace:
 [1] getindex at ./array.jl:730 [inlined]
 [2] macro expansion at ./multidimensional.jl:671 [inlined]
 [3] macro expansion at ./cartesian.jl:64 [inlined]
 [4] macro expansion at ./multidimensional.jl:666 [inlined]
 [5] _unsafe_getindex! at ./multidimensional.jl:662 [inlined]
 [6] _unsafe_getindex(::IndexLinear, ::Array{Any,2}, ::Base.Slice{Base.OneTo{Int64}}, ::Int64) at ./multidimensional.jl:656
 [7] getindex at ./multidimensional.jl:642 [inlined]
 [8] #DataFrame#101(::Bool, ::Type, ::Array{Any,2}, ::Array{Symbol,1}) at /home/cambier/julia-1.1.1/Packages/packages/DataFrames/                        CZrca/src/dataframe/dataframe.jl:206
 [9] Type at /home/cambier/julia-1.1.1/Packages/packages/DataFrames/CZrca/src/dataframe/dataframe.jl:206 [inlined] (repeats 2 tim                        es)
 [10] DataFrame(::Type, ::Int64, ::Int64) at ./deprecated.jl:57

所以我尝试了df = DataFrame(Matrix{Any}(undef,1,10)) ,但我仍然收到UndefRefError: access to undefined reference 错误。

那么正确的做法是什么?

【问题讨论】:

    标签: dataframe julia


    【解决方案1】:

    有趣。这似乎是Base中的一个错误。我会在那里调查。暂时你可以这样做:

    DataFrame([Vector{Any}(undef, 1) for i in 1:10])
    

    DataFrame([Any for i in 1:10], Symbol.(["x$i" for i in 1:10]), 1)
    

    DataFrame(Matrix{Any}(missing,1,10))
    

    我将修复弃用警告。

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 2014-05-30
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多