2

我有一个功能:

MakeTxHistogram <-function(d,x,plot.labels) {
  print(dim(d))
  ggplot(data=d) +
    geom_histogram(aes_string(x=x,y="..density..",fill="var1")) + 
    scale_x_log10() + facet_grid( var1~ var2 ) +  labs(title=plot.labels[1],x=plot.labels[2]) +
    theme
}

MakeTxHistogram当直接从脚本或控制台调用时,完全符合我的要求。所以我创建了一个新函数:

TestAndPlot<-function() {
 MakeTxHistogram(d1,x,plot.labels)
 MakeTxHistogram(d2,x,plot.labels)
 RunAStatisticalTest()
}

当我调用 时TestAndPlot(),两个调用都MakeTxHistogram(...)执行,但没有生成绘图(print()但是该函数有效)。相反,如果我写TestAndPlot为:

TestAndPlot<-function() {
 RunAStatisticalTest()
 MakeTxHistogram(d1,x1,plot.labels1)
 MakeTxHistogram(d2,x2,plot.labels2)
}

然后RunAStatisticalTest()工作,第一次调用MakeTxHistogram执行但不生成绘图,第二次调用MakeTxHistogram执行成功生成绘图。

已尝试实施诸如此处建议的解决方案,包括将 设置environment为本地环境,以及(显然)使用aes_string()而不是aes(). 任何人都可以提出问题的根源和可能的解决方案吗?我可以直接返回直接调用这些函数,但宁愿能够将它们嵌套在某些东西中(或者理解为什么我不能/不应该这样做)。

谢谢!

4

0 回答 0