假设我有2个源文件,第一个名为example1.r
,第二个example2.r
(如下所示)。
example1.r
plot(1:10,1:10)
example2.r
qplot(1:10,1:10)
当我获取example1.r时,绘制图形。但是,当我获取example2.r时,它不会。这里有什么解决方案?
(example2.r中的qplot是ggplot2的函数)
答案 0 :(得分:76)
更新:
source
的选项print.eval=TRUE
将导致评估结果的打印行为,如交互式命令行中所示。
source("Script.R", print.eval=TRUE)
knitr
默认情况下模拟交互式命令行wrt的行为。 print
ING。请注意,knitr
也可以指定为Raving包引导的Sweaving引擎。<小时/> 这是我原来的答案。但请注意,这种解决方法现在恕我直言已经过时了(对于一个小的懒惰利基而言它总是好的。)
这是着名的FAQ 7.22: Why do lattice/trellis graphics not work?。
对于像ggplot2或lattice这样的网格图形,您需要打印图形对象才能实际绘制它。
在命令行上以交互方式自动完成。在其他地方(要获取的文件,循环,函数,Sweave块)中,您需要明确打印它。
print (qplot (1 : 10, 1 : 10))
或者,您可以重新定义qplot
进行打印:
qplot <- function (x, y = NULL, z = NULL, ...) {
p <- ggplot2::qplot (x = x, y = y, z = z, ...)
print (p)
}
(这会将轴标签更改为x和y)。
我在小插图中使用这种方法,我想完全按照交互式会话中的用户键入代码来编写代码。