提问人:Grega Kešpret 提问时间:7/13/2011 最后编辑:Julius VainoraGrega Kešpret 更新时间:11/27/2016 访问量:23083
ggplot 的 qplot 不会在采购时执行
ggplot's qplot does not execute on sourcing
问:
假设我有 2 个源文件,第一个命名,第二个(如下)。example1.r
example2.r
例子1.r
plot(1:10,1:10)
例子2.r
qplot(1:10,1:10)
当我获取 example1.r 时,绘制了图形。但是,当我获取 example2.r 时,它没有。这里的解决方案是什么?
(example2.r 中的 qplot 是 ggplot2 的函数)
答:
80赞
cbeleites unhappy with SX
7/13/2011
#1
更新:
- 。R files: 的选项将导致打印评估结果的行为,就像在交互式命令行中一样。
source
print.eval=TRUE
source("Script.R", print.eval=TRUE)
- 。Rnw 文件:默认情况下模拟交互式命令行 wrt 的行为。正在。请注意,也可以将其指定为 R 包小插图的 Sweaving 引擎。
knitr
print
knitr
这是我最初的答案。但请注意,恕我直言,这种解决方法现在已经完全过时了(而且它总是只适合小型懒惰的利基市场)。
这就是著名的FAQ 7.22:为什么格子/格子图形不起作用?。
对于像 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)。
我在小插曲中使用这种方法,在这些小插曲中,我想完全按照交互式会话中的用户键入代码来编写代码。
评论
0赞
Richie Cotton
7/13/2011
小点:你不需要,因为退货。invisible(p)
print(p)
p
0赞
cbeleites unhappy with SX
7/15/2011
谢谢 Richie,实际上返回 - 这就是我想要的(如果它是可见的,从命令行使用它会产生两次绘图)。相应地编辑了代码。print (p)
invisible (p)
0赞
Aleksandr Blekh
5/24/2014
谢谢你的回答(+1)!我快要疯了,试图弄清楚这个问题几个小时。如果您不介意,我还有两个额外的相关问题:1) 上面显示的重新定义是否与分层函数配合得很好?2)对于另一个函数,产生输出-,是否有必要进行类似的重新定义?qplot()
ggplot2
ggplot2
ggplot()
2赞
cbeleites unhappy with SX
5/24/2014
@AleksandrBlekh:到目前为止,我使用这种方法的地方,它奏效了。但我使用它的次数越来越少,因为我几乎从未使用过.R 文件,但改用 .Rnw 文件。我几乎完全改用 代替 ,并且默认模拟 R 命令行的行为,所以答案对我来说已经过时了。source
knitr
Sweave
knitr
print
2赞
cbeleites unhappy with SX
5/24/2014
哦,我明白。是的,如果您使用代替,您可以并且需要应用相同的策略。ggplot ()
qplot ()
下一个:查找星期几
评论