"直接代码"之间的区别并制定一定的功能"在R代码中

时间:2017-05-09 15:55:18

标签: r function ggplot2

我疯狂地混淆了我的所作所为。

代码中的细节并不重要,我有两个选项

第一个:

 ggplot(dta_fin, aes(x=PVT_0610_Z, y=PVT_1115_Z)) +
      geom_point(shape=1) +
      geom_vline(xintercept = 0, linetype="dashed") +
      geom_hline(yintercept = 0, linetype="dashed") +
      geom_smooth(method='lm') +
      facet_wrap(~ GROUP, scales="fixed", ncol=3)      

R中函数使用的第二个:

aFunction <-function(dataname,xx,yy)
      {
        ggplot(dataname, aes(x=xx, y=yy)) +
          geom_point(shape=1) +
          geom_vline(xintercept = 0, linetype="dashed") +
          geom_hline(yintercept = 0, linetype="dashed") +
          geom_smooth(method='lm') +
          facet_wrap(~ GROUP, scales="fixed", ncol=3)
      }

      aFunction(dta_fin,PVT_0610_Z,PVT_1115_Z)

从第一个和第二个获得相同的图表是很自然的,但是我从两个代码中得到了不同的数字。是什么原因?..........

1 个答案:

答案 0 :(得分:0)

从函数内部调用ggplot时应该是aes_string():

aFunction <-function(dataname,xx,yy)
      {
        ggplot(dataname, aes_string(x=xx, y=yy)) +
          geom_point(shape=1) +
          geom_vline(xintercept = 0, linetype="dashed") +
          geom_hline(yintercept = 0, linetype="dashed") +
          geom_smooth(method='lm') +
          facet_wrap(~ GROUP, scales="fixed", ncol=3)
      }

不要忘记将xx和yy作为字符串传递给里面的函数:

  aFunction(dta_fin,PVT_0610_Z,PVT_1115_Z)