我有一个功能:
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()
. 任何人都可以提出问题的根源和可能的解决方案吗?我可以直接返回直接调用这些函数,但宁愿能够将它们嵌套在某些东西中(或者理解为什么我不能/不应该这样做)。
谢谢!