Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel中运行R脚本_R_Vba_Excel_Rexcel - Fatal编程技术网

在Excel中运行R脚本

在Excel中运行R脚本,r,vba,excel,rexcel,R,Vba,Excel,Rexcel,关于如何做到这一点,没有太多的信息。我尝试在线学习一个博客,并在VBA中实现了以下代码(带有R文件的路径):- Sub RunRscript() '通过Shell运行外部R代码 'RScript的位置是'C:\R\u code' '脚本名称为'hello.R' 作为对象的暗壳 Set shell=VBA.CreateObject(“WScript.shell”) 将waitTillComplete设置为布尔值:waitTillComplete=True 将样式设置为整数:样式=1 将错误代码设置

关于如何做到这一点,没有太多的信息。我尝试在线学习一个博客,并在VBA中实现了以下代码(带有R文件的路径):-

Sub RunRscript()
'通过Shell运行外部R代码
'RScript的位置是'C:\R\u code'
'脚本名称为'hello.R'
作为对象的暗壳
Set shell=VBA.CreateObject(“WScript.shell”)
将waitTillComplete设置为布尔值:waitTillComplete=True
将样式设置为整数:样式=1
将错误代码设置为整数
将路径设置为字符串
path=“RScript C:\R\u code\hello.R”
errorCode=shell.Run(路径、样式、完成)
端接头

但是,当我在Excel中运行宏时,它基本上什么也不做,只是在RStudio中打开脚本。我没有得到任何错误,但它没有给出任何输出,只是在Rstudio中打开了R脚本。我做错了什么

另外,如果我需要在Excel中使用R,这个方法有效吗?或者基本上我需要安装软件RExcel


如需在Excel中使用R的任何其他链接/信息,将不胜感激。谢谢:)

在RStudio开张似乎很奇怪。我建议直接通过R.exe运行它。从您告诉我们的内容来看,路径设置正确。因此,如果不需要输出,可以这样调用R.exe:

Sub RunRscript()
    Shell ("R CMD BATCH C:\R_code\hello.R")
End Sub
如果需要输出,则需要创建如下WshShell对象:

Sub RunRscript()
    Dim output As String
    output = CreateObject("WScript.Shell").Exec("R CMD BATCH C:\R_code\hello.R").StdOut.ReadAll
End Sub

这是运行R脚本的旧方法,但目前应该可以正常工作。您可能想进一步检查R的安装,看看是否还有其他问题。

我和您有相同的问题,但“R CMD BATCH”解决方案对我不起作用。这是对我有用的东西

首先,我测试了是否可以通过命令行运行我的R脚本来消除任何问题

打开命令提示符,尝试在“>符号“path Rscript.exe”“要运行的R脚本的路径”后键入。在本例中,我键入“C:\Program Files\R\R-3.6.0\bin\Rscript.exe”“C:\Users\phung\Documents\Angela\DB\u Import\TransformData.R”,然后按enter键运行代码。如下图所示。您需要导航到C程序文件>R>版本>bin以查找Rscript.exe(可能是计算机上的不同路径)

一旦我实现了这一点,我在这里使用了Ibo提供的代码:


我在VBA中小心地使用了双引号,因为我的文件夹名中有一个空格。

通过cmd.exe运行“RScript C:\R\u code\hello.R”时会发生什么情况?同样,我上面描述的只是在RStudioPossible副本中打开的,因此此代码看起来正确。已经尝试过了。我猜在Windows上,您不能简单地调用这样的可执行文件。类似于可执行文件C:\Program Files\R\R-3.4.0\bin\x64\Rscript.exe C:\R\u code\hello.RHello的路径,谢谢你的回答。我对编程很陌生。你能告诉我在哪里写这个-CMD/VBA代码吗?或者你只是想让我在上面问题中提到的代码中的某个地方编辑它?没有输出的代码可以工作(这意味着R Studio不能打开)-我想这就是它必须要做的。但是第二个,您的答案中提到的输出会给出错误编译错误:预期语句结束重试,我试图将其全部压缩到一行,但显然它不喜欢这样!我还没有测试过它,但如果可能的话,应该是后续问题()
    Function Run_R_Script(sRApplicationPath As String, _
                    sRFilePath As String, _
                    Optional iStyle As Integer = 1, _
                    Optional bWaitTillComplete As Boolean = True) As Integer

        Dim sPath As String
        Dim shell As Object

        'Define shell object
        Set shell = VBA.CreateObject("WScript.Shell")

        'Wrap the R path with double quotations
        sPath = """" & sRApplicationPath & """"
        sPath = sPath & " "
        sPath = sPath & sRFilePath

        Run_R_Script = shell.Run(sPath, iStyle, bWaitTillComplete)
    End Function


   Sub Run_R 
        Dim iEerrorCode As Integer

        iEerrorCode = Run_R_Script("C:\Program Files\R\R-3.6.0\bin\Rscript.exe", """C:\Users\phung\Documents\Angela\1_MR-100 project\DB ready VBA code\TransformData.R""")
   End Sub