1

我在 Julia 中调用 ggplot 包,如本网站所示:https ://avt.im/blog/2018/03/23/R-packages-ggplot-in-julia 。我使用该网站中显示的软件包,一切正常。

现在我使用包绘制 Julia 的平均边际效应Effects。我想用ggplot这里绘制它是我拥有的数据:

df = effects(design, m1)

在此处输入图像描述

这是我的ggplot代码和错误:

ggplot(df, aes(unemploy, workhours, group = sex, shape= sex, linetype=sex)) + 
  geom_point(position=position_dodge(width=0.15)) +
  geom_errorbar(aes(ymin = lower, ymax = upper),width = 0.1,
                linetype = "solid",position=position_dodge(width=0.15))+
  geom_line(position=position_dodge(width=0.15))  

UndefVarError: sex not defined

Stacktrace:
 [1] top-level scope
   @ In[131]:1
 [2] eval
   @ ./boot.jl:360 [inlined]
 [3] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
   @ Base ./loading.jl:1116

我之前在 R 中在同一个数据帧上尝试过这段代码,它运行良好,所以我猜的问题是 ggplot 没有按应有的方式读取数据。有人可以帮我解决这个问题吗?

4

1 回答 1

1

您的链接实际上在这个小片段中解释了它:

ggplot(d, aes(x=:x,y=:y)) + geom_line()

请注意,aes 函数使用 :x 之类的 Julia 符号来引用数据框列。

在您的行aes(unemploy, workhours, group = sex, shape= sex, linetype=sex)中, ,sex被视为 Julia 中的任何其他变量,特别是 Julia 尝试sex 在代码中查找现有变量及其引用的对象。在您的代码中找不到它,因此UndefVarError.

非标准评估使Raes能够group=sexsex其视为名称而不是尝试评估它。这有点类似于 Julia 的宏在编译阶段之前处理未计算表达式的方式,但 R 的风格非常不同。

于 2021-11-12T12:21:17.027 回答