小编sob*_*sob的帖子

Julia 模块中的 Expr eval 给出 UndefVarError

我能够很好地运行以下代码,并且它提供了预期的结果:

\n
julia> using DataFrames, DataFramesMeta\n\njulia> expr = "2*:a+:b"\n"2*:a+:b"\n\njulia> df = DataFrame(a=[1,2],b=[3,4])\n2\xc3\x972 DataFrame\n Row \xe2\x94\x82 a      b     \n     \xe2\x94\x82 Int64  Int64 \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82     1      3\n   2 \xe2\x94\x82     2      4\n\njulia> eval(Meta.parse("@transform(df, " * join(collect(":res" => expr), " = ") * ")"))\n2\xc3\x973 DataFrame\n Row \xe2\x94\x82 a      b      res   \n     \xe2\x94\x82 Int64  Int64  Int64 \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n   1 \xe2\x94\x82     1      3      5\n   2 \xe2\x94\x82     2      4      8\n\n
Run Code Online (Sandbox Code Playgroud)\n

然而,当在模块内完成时,这会失败。

\n
julia> module foo\n           using DataFrames, DataFramesMeta\n           function bar()\n               expr = "2*:a+:b"\n               df = DataFrame(a=[1,2],b=[3,4])\n …
Run Code Online (Sandbox Code Playgroud)

metaprogramming dataframe julia

7
推荐指数
1
解决办法
196
查看次数

标签 统计

dataframe ×1

julia ×1

metaprogramming ×1