我有一个功能:
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
执行和成功生成情节。
尝试实施建议here之类的解决方案,包括将environment
设置为本地环境,以及(显然)使用aes_string()
而不是aes()
。任何人都可以提出问题的根源和可能的解决方案吗?我可以直接回到调用这些函数,但宁愿能够将它们嵌入到某些东西中(或理解为什么我不能/不应该这样做)。
谢谢!