【发布时间】:2016-11-24 17:23:57
【问题描述】:
我正在使用 R 和 Excel 做一个项目,使用包“xlsx”来打印输出,我遇到了以下问题。
分析由名为“Model.R”的脚本执行。名为“Output.R”的第二个脚本生成我的分析的输出(包括一些图表)。我使用命令从第一个脚本调用它
source("Output.R")
如果我从 R Studio 运行这两个脚本,没有问题,输出是正确的。
现在,我使用以下 VBA 代码为宏构建了一个 Excel“界面”来运行脚本:
Sub Run_script()
Dim cmdLine As String
cmdLine="C:\\Program Files\\R\\R-3.3.1\\bin\\Rscript C:\\...\\Model.R"
shell cmdLine
End Sub
现在一切正常,输出正确打印在一个新的 Excel 文件中,部分原因是现在所有图表都是空白框,里面什么都没有。
有没有人知道如何解决这个问题?例如,可能是从 Excel 运行脚本的另一种方式。
谢谢
编辑
以下是生成并保存其中一张图表的 R 代码,例如:
hist(P1,probability=FALSE,main = "",breaks = 20)
title("CE Anno -1")
dev.copy(png,filename="CE1.png");
dev.off ()
所以图像在同一工作目录中保存为 png 文件。然后,要在 Excel 中打印它,我使用 xlsx 包和以下代码:
outwb <- createWorkbook()
SummaryCE <- createSheet(outwb, sheetName = "Summary CE")
addPicture("CE1.png", SummaryCE, scale = 0.5, startRow = 11, startColumn = 1)
saveWorkbook(outwb, "Risultati RO.xlsx")
正如我所说,如果我从 R Studio 运行此代码,它可以正常工作。使用之前的VBA代码从命令行调用,Excel创建正确,但是图片是一个空白框。
编辑 2
感谢您的帮助,我成功解决了这个问题。我现在要做的是基于相同的脚本 Model.R 自动生成报告(Word 格式,此处没有 LaTex)。R
为此,我使用 Markdown 功能并编写了一个 R Markdown 文件“Report.Rmd”。在这里,我基本上加载了 Model.R 执行产生的工作空间
load("Mywork.RData")
然后添加一些表格、图表和 cmets。然后,我使用“Model.R”脚本中的以下行生成 Word 文档
render("Report.Rmd")
再次,我有一个与以前类似的问题。如果我从 R Studio 运行它,一切都很好。如果我使用以前的Excel界面,文件夹中不会出现Word输出。
有谁知道这个问题可能是什么原因造成的?
谢谢你的几个问题,很抱歉,我对 R 很满意,但这是我第一次使用 VBA。
【问题讨论】:
-
您不需要在 VBA 或命令行中转义反斜杠
-
您一直在引用 image、charts 和 output,但我们没有看到任何代码只运行命令行调用。您可以发布 R 代码以便我们查看您的完整过程吗? R 脚本是否生成 Excel 要呈现的图表图像?
-
图表是在单独的窗口中绘制的,在excel中不能被shell捕获。尝试从磁盘上的 R 脚本中将图表保存为 png/jpg,并使用 vba 脚本在 Excel 中加载这些图像文件。
-
感谢大家的帮助。我添加了几行代码,以便您对问题有一个全面的了解。如果您找到解决方案,请告诉我!
标签: r excel vba command-line xlsx