从Rscript以交互方式运行R.

pic*_*ick 7 r rscript r-markdown shiny

我正在尝试从Rscript启动一个闪亮的应用程序或交互式.Rmd文档.但是,我得到的只是一条信息

http : //127.0.0.1:...

我相信这是因为R正在以交互模式运行(关于此的另一篇文章).如何编写正确的Rscript以便以下任何一个都能正常工作?

我的剧本

#!/usr/bin/Rscript

## This
library(shiny)
runApp(appDir = "../app")

## Or this
## rmarkdown::run("Main.Rmd")
Run Code Online (Sandbox Code Playgroud)

nru*_*ell 5

如果我正确理解了您的问题,则可以使用littler来实现这一点,我可以用littler代替Rscript围绕R的脚本任务。我正在运行CentOS 7,并且根据您问题中的代码,您看起来像在类似Unix的计算机上,因此安装littler应该不是问题。为了使再现性最小,我使用了RStudio提供的默认闪亮应用程序和基于闪亮的Rmarkdown模板,分别将它们另存为testapp(项目/应用程序目录名称)和testRMD.rmd。然后,我有以下脚本:


测试程序

#!/usr/bin/env r

shiny::runApp(
  "~/tmp/delete/testapp",
  port = 7088, 
  launch.browser = TRUE,
  host = "127.0.0.1")
Run Code Online (Sandbox Code Playgroud)

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"))
Run Code Online (Sandbox Code Playgroud)

设置这些文件的权限,以便可以执行它们-

[nathan@nrussell R]$ chmod +x testapp.r testRMD.r
Run Code Online (Sandbox Code Playgroud)

chmod +u ...应该足够,但是无论如何...),并且应该都可以从终端运行它们了,等等。


[nathan@nrussell R]$ ./testapp.r
Loading required package: shiny

Listening on http://127.0.0.1:7088
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

[nathan@nrussell R]$ ./testRMD.r
Loading required package: shiny

Listening on http://127.0.0.1:7088
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Rmd我省略了文件的一些其他命令行输出,但是我敢肯定,如果需要的话,可以很容易地将其抑制。无论如何,这似乎正常工作-闪亮的应用程序和Rmarkdown应用程序都是交互式的,就像从RStudio启动时一样-但是,如果您有其他想法,请进行说明。