gpt4 book ai didi

r - 用于运行 R 脚本 : output image issue in Excel 的 VBA 代码

转载 作者:行者123 更新时间:2023-12-02 19:26:10 25 4
gpt4 key购买 nike

我正在使用 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)

为此,我使用 Markdown 功能并编写了一个 R Markdown 文件“Report.Rmd”。在这里,我基本上加载了 Model.R 执行产生的工作区

load("Mywork.RData")

然后添加一些表格、图表和注释。然后,我使用“Model.R”脚本中的以下行生成 Word 文档

render("Report.Rmd")

我又遇到了和以前类似的问题。如果我从 R Studio 运行它,一切都很好。如果我使用以前的 Excel 界面,Word 输出不会出现在文件夹中。

谁知道什么可能会导致这个问题?

谢谢您,也很抱歉提出了几个问题,我对 R 很满意,但这是我第一次使用 VBA。

最佳答案

dev.copy 在非交互模式(shell 命令)下无法正常工作。将代码修改为以下脚本:

    require(xlsx)

fname <- "CE1.png"

#add this device. you can use other device,e.g. jpg /bmp/tiff devices
png(fname) # you can define width /height as needed

hist(P1,probability=FALSE,main = "",breaks = 20)
title("CE Anno -1")

#dev.copy(png,filename="CE1.png"); #remove this line

dev.off ()

# the following code used as is
outwb <- createWorkbook()
SummaryCE <- createSheet(outwb, sheetName = "Summary CE")
addPicture("CE1.png", SummaryCE, scale = 0.5, startRow = 11, startColumn = 1)
saveWorkbook(outwb, "Risultati RO.xlsx")

为了确保代码能够达到预期的结果,请创建一个批处理文件(例如 do.bat)并从控制台窗口执行它。

批处理文件可能是:

   "I:\Program Files\R\R-3.2.1\bin\i386\rscript" --verbose    model.r

它应该可以工作并且 Excel 中充满了图像。

如果成功完成,您可以在excel中调用批处理文件

我在Excel中使用以下VBA脚本来调用do.bat:

 Sub RunShell()
Dim currentPath As String
currentPath = ActiveWorkbook.Path
'Debug.Print currentPath
Call Shell(currentPath & "\do.bat ", vbNormalFocus)
End Sub

我已经测试了代码,它可以正常工作并用图像填充 Excel

关于r - 用于运行 R 脚本 : output image issue in Excel 的 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39276101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com