导出通过VBA执行.R的PDF文件

时间:2017-08-01 15:46:28

标签: r vba pdf ggplot2

我想执行R代码(后端)来绘制图形并通过VBA将其导出为pdf(这是前端)。

我使用的VBA代码如下:

Sub plotHello()
Dim shell As Object
Set shell = CreateObject("WScript.Shell")
Dim waitTillComplete As Boolean: waitTillComplete = True
Dim style As Integer: style = 1
Dim errorCode As Integer
Dim path As String
path = """C:\Produits\R\R-3.2.5\bin\R.exe"" CMD BATCH --no-environ --silent --no-restore --no-save C:\R_code\hello.R"
shell.Run (path)
End Sub

问题是:它适用于hello.R文件:

sink('C:/R_code/hello.txt',append=F,type="output")
cat('Hello World')
sink(NULL)

但是sink()无法导出图形输出,我应该使用pdf()函数

我认为正确的语法是:

Library(ggplot2)    
x=c(1,2,3,4,5,6)
y=c(45,78,35,213,65,456)
XY=data.frame(x,y)
g<-ggplot(data=XY,aes(x=x,y=y))+geom_line(data=XY,aes(x=x,y=y))
pdf('C:/R_code/hello.pdf')
g
dev.off()

Butit不起作用,例如jpeg()函数的情况...... 但是当我在RStudio中执行代码时它确实有效,问题似乎是VBA和excel之间的链接仅适用于pdf函数... 如果有人有解决方案, 非常感谢

1 个答案:

答案 0 :(得分:0)

事实上,Imo是对的。即使RStudio已打开并且预先在RStudio中导入了库,也必须在R文件中导入库。 另一个评论,如果想要使用grid.arrange,这个转换在两个命令之间有pdf()和dev.off

前:

pdf('C:/R_code/hello.pdf')
grid.arrange(...)
dev.off()