【发布时间】:2017-08-01 15:46:28
【问题描述】:
我想执行 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()
但它不起作用,例如 jpeg() 函数也是如此...... 但是当我在 RStudio 中执行代码时它确实有效,问题似乎是 VBA 和 excel 之间的链接仅适用于 pdf 函数...... 如果有人有解决方案, 非常感谢
【问题讨论】:
-
也许在 R 脚本的倒数第二行尝试
print(g)而不是g。此外,您提供的脚本不会加载ggplot2,因此您应该在顶部附近有一行library(ggplot2)。 -
谢谢,但效果不好。问题是代码在 R 中工作,但当我从 VBA 调用它时却没有,尽管 vba 和 R 之间的链接很好,因为它可以使用 sink() 导出 txt