Как правильно создать exe для кода r

Я хотел бы, чтобы мои пользователи использовали блестящее приложение, которое хранится наgist.github.com использование library(shiny);runGist("xxx"). Для этой цели я создал папку, содержащую переносные файлы Chrome, portable R и 2:

1 - run.R - содержащий следующий код:

library(shiny);runGist("xxx")

2-VBScript, который должен вызвать запуск.r таким образом, будет вызван runGist.

Randomize
CreateObject("Wscript.Shell").Run "R-PortableAppR-PortablebinR.exe CMD BATCH --vanilla --slave run.R" & " " & RND & " ", 0, False

когда я нажимаю VBScript, ничего не происходит, поэтому я думаю, что что-то пропустил, как это можно решить проблема?

UPDATE: после нажатия кнопки выполнить.vbs я получил нумерованный файл, когда я открыл его на Notepad++, я получил следующий текст:

Downloading https://gist.github.com/#############/download
NULL
[1] TRUE

Listening on http://127.0.0.1:1337

когда я скопировал http://127.0.0.1:1337 для браузера он дает то, что я хочу. Итак, вопрос в том, как вызвать браузер с адресом, указанным в сообщении? - Я заметил, что каждый щелчок дает другой адрес.

3 ответов


вы можете изменить настройки браузера по умолчанию, то runGist С launch.browser будет просто работать.

run.R

#Assuming your portable Chrome's relative path is "Chrome\Application\chrome.exe"
options(browser = normalizePath("Chrome\Application\chrome.exe"));

library(shiny);
runGist("xxx", launch.browser = TRUE);

run.vbs

Set Fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("Wscript.Shell")
    'specify CD to start commands from script's parent folder
    WshShell.CurrentDirectory = Fso.GetParentFolderName(WScript.ScriptFullName)

'Start the command as hidden and don't wait
WshShell.Run "R-Portable\App\R-Portable\bin\R.exe CMD BATCH --vanilla --slave run.R NUL", 0, False

С точки зрения VBScript, поскольку все, что вы используете, - это относительные пути, если текущий active directory (откуда вычисляются относительные пути) - это не то, что вы думаете, у вас могут быть проблемы.

вы можете попробовать что-то вроде (verbose version)

Option Explicit

    'Initialize PRNG
    Randomize 

Dim fso 
    ' As we are dealing with files/folders, it is better to use adecuate functions
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim baseFolder
    ' Retrieve the folder where the current script is stored
    baseFolder = fso.GetFile(WScript.ScriptFullName).ParentFolder.Path

Dim RScript
    ' Combine the current folder and file to execute 
    RScript = fso.BuildPath( baseFolder, "run.R" )

Dim R
    ' Combine the current folder and path to the R executable
    R = fso.BuildPath( baseFolder, "R-Portable\App\R-Portable\bin\R.exe" )

Dim command 
    ' compose the command to execute
    command = q(R) & " CMD BATCH --vanilla --slave " & q(RScript) & " " & Rnd

    ' Execute the composed command
    Call WScript.CreateObject("WScript.Shell").Run( command, 0, False )

' Just a helper function to quote the file/folder paths in the command    
Function q( text )
    q = """" & text & """"
End Function

относительно вашего обновления: Обратите внимание, что вы можете установить номер порта в качестве аргумента в runApp() Е. Г: runApp(..., port = 1337)

пример:

n <- 200


# Define the UI
ui <- bootstrapPage(
  numericInput('n', 'Number of obs', n),
  plotOutput('plot')
)


# Define the server code
server <- function(input, output) {
  output$plot <- renderPlot({
    hist(runif(input$n))
  })
}

# Return a Shiny app object
runApp(shinyApp(ui = ui, server = server), port = 1337)

Edit: ответ на последующие действия:

если это не помогает:

library(shiny);runGist(..., launch.browser = TRUE, port = 1337)

попробуйте это:

library(shiny);runGist(..., port = 1337);browseURL("http://127.0.0.1:1337")