Запустить R скрипт в Excel

Там не так много информации о том, как это сделать. Я попытался изучить блог онлайн и внедрил следующий код в VBA(с путем к файлу R):-

Sub RunRscript()
    'runs an external R code through Shell
    'The location of the RScript is 'C:\R_code'
    'The script name is 'hello.R'

    Dim shell As Object
    Set shell = VBA.CreateObject("WScript.Shell")
    Dim waitTillComplete As Boolean: waitTillComplete = True
    Dim style As Integer: style = 1
    Dim errorCode As Integer
    Dim path As String
    path = "RScript C:\R_code\hello.R"
    errorCode = shell.Run(path, style, waitTillComplete)
End Sub

Источник

Однако когда я запускаю макрос в Excel, он в основном ничего не делает - просто открывает скрипт в RStudio. Я не получаю никакой ошибки, но он не дает никакого вывода - просто открывает скрипт R в Rstudio. Что я делаю неправильно?

Кроме того, этот метод работает или мне нужно установить программное обеспечение RExcel, если мне нужно использовать R в Excel?

Любая другая ссылка / информация для использования R в Excel будет принята с благодарностью. Спасибо:)

3 ответа

Решение

Кажется довольно странным, что он открывается в RStudio. Я бы предложил запустить его прямо через R.exe. Похоже, что PATH настроен все правильно из того, что вы сказали нам. Таким образом, вы можете вызвать 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, чтобы увидеть, есть ли другие проблемы.

Предыдущие ответы верны, но вот почему. Путь, который вы используете для WScript.Shell, — это то, что выполняется. Это похоже на двойной щелчок по файлу в проводнике.

Операционная система видит расширение файла (.R) в пути и говорит: «Я знаю, что с этим делать! Приложением по умолчанию для .R является RStudio. Поэтому она открывает RStudio и указанный файл.

У меня была та же проблема, что и у вас, но решение "R CMD BATCH" у меня не сработало. Вот что у меня сработало.

Во-первых, я проверил, могу ли я запустить свой сценарий R через командную строку, чтобы устранить любые проблемы.

Откройте командную строку и попробуйте ввести после символа ">" "путь Rscript.exe", "путь к сценарию R, который вы хотите запустить". В моем случае я набрал "C:\Program Files\R\R-3.6.0\bin\Rscript.exe", "C:\Users\phung\Documents\Angela\DB_Import\TransformData.R", затем нажмите Enter, чтобы запустить код. См., Например, изображение ниже. Вам нужно будет перейти к программным файлам C> R> версия> bin, чтобы найти Rscript.exe (на вашем компьютере это может быть другой путь).

Как только это заработало, я использовал адаптированный код, предоставленный Ibo здесь: Запуск сценариев R из VBA

    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

Я осторожно использовал двойные кавычки в VBA, потому что в имени моей папки был пробел.

Другие вопросы по тегам