我试图从Rscript启动一个闪亮的应用程序或交互式.Rmd文档。但是,我得到的只是一条消息
聆听http://127.0.0.1:...
我相信这是因为R以交互模式运行(another post关于此)。如何编写正确的Rscript以便以下任何一种都可以工作?
#!/usr/bin/Rscript
## This
library(shiny)
runApp(appDir = "../app")
## Or this
## rmarkdown::run("Main.Rmd")
答案 0 :(得分:4)
如果我正确理解了您的问题,我可以使用littler来实现此目的,我使用var smtpSession = MCOSMTPSession()
smtpSession.hostname = "smtp.gmail.com"
smtpSession.username = "matt@gmail.com"
smtpSession.password = "xxxxxxxxxxxxxxxx"
smtpSession.port = 465
smtpSession.authType = MCOAuthType.SASLPlain
smtpSession.connectionType = MCOConnectionType.TLS
smtpSession.connectionLogger = {(connectionID, type, data) in
if data != nil {
if let string = NSString(data: data, encoding: NSUTF8StringEncoding){
NSLog("Connectionlogger: \(string)")
}
}
}
var builder = MCOMessageBuilder()
builder.header.to = [MCOAddress(displayName: "Rool", mailbox: "itsrool@gmail.com")]
builder.header.from = MCOAddress(displayName: "Matt R", mailbox: "matt@gmail.com")
builder.header.subject = "My message"
builder.htmlBody = "Yo Rool, this is a test message!"
let rfc822Data = builder.data()
let sendOperation = smtpSession.sendOperationWithData(rfc822Data)
sendOperation.start { (error) -> Void in
if (error != nil) {
NSLog("Error sending email: \(error)")
} else {
NSLog("Successfully sent email!")
}
}
代替Rscript
来执行围绕R的脚本编写任务。我正在运行CentOS 7 ,根据你问题中的代码,你看起来像是在类Unix机器上,所以installing littler应该不是问题。为了获得最低的可重复性,我使用了RStudio提供的默认闪亮应用程序和基于闪亮的Rmarkdown模板,分别将它们保存为testapp
(项目/应用程序目录名称)和testRMD.rmd
。然后,我有以下脚本:
testapp.r
#!/usr/bin/env r
shiny::runApp(
"~/tmp/delete/testapp",
port = 7088,
launch.browser = TRUE,
host = "127.0.0.1")
testRMD.r
#!/usr/bin/env r
rmarkdown::run(
file = "testRMD.rmd",
dir = "~/tmp/delete",
shiny_args = list(
port = 7088,
launch.browser = TRUE,
host = "127.0.0.1"))
设置这些文件的权限,以便执行它们 -
[nathan@nrussell R]$ chmod +x testapp.r testRMD.r
(chmod +u ...
应该足够,但无论如何......),你应该全部设置从你的终端等运行它们......
[nathan@nrussell R]$ ./testapp.r
Loading required package: shiny
Listening on http://127.0.0.1:7088
[nathan@nrussell R]$ ./testRMD.r
Loading required package: shiny
Listening on http://127.0.0.1:7088
我省略了Rmd
文件的一些额外命令行输出,但我确定如果需要可以轻松地抑制它。无论如何,这似乎工作正常 - 闪亮的应用程序和Rmarkdown应用程序都是交互式的,就像从RStudio发布时一样 - 但是如果你有其他想法请澄清。
答案 1 :(得分:0)
谢谢@nrussell,你的例子对我帮助很大!
这是我在 Windows 10 上启动交互式降价文档的解决方案。
REM Change to correct directory
cd "C:\Users\me\Documents\project_folder\"
REM Print files available (not required, but helpful)
dir
REM Point system to R's Pandoc with Rscript then launch
"C:\Program Files\R\R-4.0.3\bin\Rscript.exe" -e ^
"Sys.setenv(RSTUDIO_PANDOC='C:/Users/me/Documents/RStudio/bin/pandoc'); rmarkdown::run(file = 'myInteractiveMarkdown.Rmd', shiny_args = list(launch.browser = TRUE, host = '127.0.0.1'))"
我发现我最初遇到了两个错误:
error pandoc version 1.12.3 or higher is required
,我使用说明解决了该消息 hereshiny_args
中设置端口时,bat 文件的后续执行会得到端口已经繁忙的错误