为了避免必须致电print()
来显示由ggplot2::qplot
制作的图片输出,我使用了@ cbeleites'回答这个问题:ggplot's qplot does not execute on sourcing。但是,尝试运行该脚本会生成以下错误:
Error in exists(name, envir = env, mode = mode) : argument "env" is missing, with no default
这里是追溯输出:
11 exists(name, envir = env, mode = mode)
10 find_global(scale_name, env, mode = "function")
9 scales_add_missing(plot, c("x", "y"))
8 ggplot_build(x)
7 print.ggplot(p)
6 print(p) at graphics.R#15
5 qplot(data[["Project Age"]], data = data, geom = "histogram", binwidth = 1) at edaSourceForge.R#8
4 eval(expr, envir, enclos)
3 eval(ei, envir)
2 withVisible(eval(ei, envir))
1 source("~/diss-floss/analysis/edaSourceForge.R")
最后,关于我如何运行脚本的补充说明。我觉得这很重要,因为我认为错误是由于特定R环境的缺乏可见性 。我在RStudio中运行脚本analysis/edaSourceForge.R
,当前工作目录为import
:
source('~/diss-floss/analysis/edaSourceForge.R')
对于来自工作目录和来自调用模块的用户定义的qplot()
的相对路径匹配(&#34),这似乎不是问题恕我直言; ../ utils / graphics.R"),当然,我可能在这里错了。
我的项目的目录结构(〜是ruser
的主目录):
+- ~/diss-floss (Project's root)
|- ...
|- import (current working directory)
|- analysis (edaSourceForge.R)
|- utils (graphics.R)
|- ...
ggplot::qplot
的重新定义功能位于graphics.R
模块中:
qplot <- function (x, y = NULL, z = NULL, ...) {
p <- ggplot2::qplot (x = x, y = y, z = z, ...)
print (p)
}
实际调用用户定义的 qplot
函数位于edaSourceForge.R
模块
if (!suppressMessages(require(ggplot2))) install.packages('ggplot2')
source("../utils/graphics.R")
正如我所说,我认为错误与找不到特定R环境有关,我尝试使用各种与环境相关的R函数,但到目前为止它没有用。
我将非常感谢您的帮助和建议!