Как правильно создать 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")