目前我有一个 R 闪亮的应用程序,运行它我打开 RStudio 并执行
setwd("C:/Users/Me/Desktop/R/ShinyProject2")
library(shiny)
......
runApp()
从位于我的目录中的 R 脚本。
我将应用程序发送给不知道如何使用 R 的同事进行审查。
所以我只是想知道......有没有一种简单的方法可以编写一个直接打开 UI 的可执行文件,而无需单击打开 R studio 并执行代码?
目前我有一个 R 闪亮的应用程序,运行它我打开 RStudio 并执行
setwd("C:/Users/Me/Desktop/R/ShinyProject2")
library(shiny)
......
runApp()
从位于我的目录中的 R 脚本。
我将应用程序发送给不知道如何使用 R 的同事进行审查。
所以我只是想知道......有没有一种简单的方法可以编写一个直接打开 UI 的可执行文件,而无需单击打开 R studio 并执行代码?
我知道这是一个古老的讨论,但它可能会帮助知道现在可以做到这一点的人。您可以创建一个独立的闪亮应用程序,在计算机上运行而无需安装 R 或任何库。有一种相对简单的方法(目前我只为 Windows 用户做过,但 MacOS 也应该有一些东西),遵循以下详细步骤:http ://www.r-bloggers.com/deploying- desktop-apps-with-r/ 。其他选项可能是在 Shiny 服务器上上传应用程序。
RStudio!= R
R 有一个简单的命令行界面,您可以通过在 R 安装的 bin 文件夹中运行 R.exe 在 Windows 上运行该界面。
还有 Rscript.exe,它可以运行表达式或脚本文件。例如:
C:\Program Files\R\R-2.15.2\bin\RScript -e hist(runif(1000))
将(给定正确的路径)创建一个带有直方图的 PDF 文件。
所以,
或者将它托管在 RStudio 家伙的公共闪亮服务器上,但是我们都可以看到它。
您现在可以将 RInno 包用于此类事情。要进行设置:
install.packages("RInno")
require(RInno)
RInno::install_inno()
然后你只需要调用两个函数来设置一个安装框架:
create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()
如果您想包含 R,请添加include_R = TRUE
到create_app
:
create_app(app_name = "myapp", app_dir = "path/to/myapp", include_R = TRUE)
它默认包括闪亮、magrittr 和 jsonlite,所以如果您使用其他包,如 ggplot2 或 plotly,只需将它们添加到pkgs
参数中。您还可以在remotes
参数中包含 GitHub 包:
create_app(
app_name = "myapp",
app_dir = "path/to/myapp"
pkgs = c("shiny", "jsonlite", "magrittr", "plotly", "ggplot2"),
remotes = c("talgalili/installr", "daattali/shinyjs"))
如果您对其他功能感兴趣,请查看FI Labs - RInno
我遇到了同样的问题,并使用了以下两种都可以正常工作的解决方案。
优点:该应用程序可随时随地访问。
缺点:每月只有 25 个活跃小时。
方法:
优势:尽可能多的活动时间。
缺点:需要在同一个本地网络上(或使用 VPN)。该应用程序必须在连接到此网络的计算机上持续运行。此外,它一次不能为多个用户执行计算。
方法:你需要在你的电脑上运行app并在局域网上共享,通过将runapp命令改为:
runApp(host="0.0.0.0",port=5050)
然后可以通过http://[your-IP-address]:5050 访问该应用程序(参见:Hosting LAN Shiny apps run from command line)
现在有一种新方法可用于通过“Electron”和“Photon”构建真正独立的 Shiny 应用程序 exe。请参阅以下链接以获取软件包/插件等。
也就是说,RStudio 的 shinyapps.io 或 Binder 部署可能是可访问性和开发方面的更好选择。
下面是一个快速修复。通过 .转到命令行中的项目目录cd
。然后
R -e "shiny::runApp(port=8000,host = getOption('shiny.host', '10.10.10.10'))"
现在 URL10.10.10.10:8000
将处于活动状态。
nohup
可以使用即使在您注销后仍保持 URL 活动。显然,这不是生产环境所需的设置。
nohup R -e "shiny::runApp(port=8000,host = getOption('shiny.host', '10.10.10.10'))" &
我知道这是一个非常古老的讨论,但我最近遇到了这个问题,在尝试了几个选项后,我发现使用 shinyshortcut 包是最好的:
library(shinyShortcut) shinyShortcut(shinyDirectory = getwd(), OS = .Platform$OS.type, gitIgnore = FALSE)
Spacedman 提出的解决方案对我有用。在下文中,我想给出一些实际的例子来说明如何做。
第 1 步。假设您的同事不知道 R 和 RStudio,他们仍然需要在他们的 PC 上安装 R。他们不一定需要 RStudio。
第 2 步。他们需要闪亮库安装闪亮应用程序中的所有库。但是假设他们不知道如何安装它们。
他们必须运行以下 R 代码一次(使用一些示例库):
# collect here all the libraries used by your shiny app
install.packages(c('shiny', 'ggplot2', 'magrittr'), repos='http://cran.us.r-project.org')
如果他们没有安装权限或者他们想在其他地方安装这些额外的库,那么指定它们必须安装的位置:
install.packages(c('shiny', 'ggplot2', 'magrittr'), 'E:/some_path/rlib', repos='http://cran.us.r-project.org')
非常懒惰,根本不使用 R,他们可以调用批处理文件。您可以将此 R 行嵌入到名为“installer.R”的代码中,并从名为“installer.bat”的批处理文件中调用它,其中包含以下内容:
set RSCRIPT=C:\Programme\R\R-4.1.0\bin\Rscript.exe
set SPATH=C:\Documents\R_codes
call "%RSCRIPT%" "%SPATH%\installer.R"
这是假设他们的当前版本是 R-4.1.0 并且变量SPATH
指定“installer.R”的位置
现在,我们(几乎)准备好开始闪亮了。
第 3 步。通常,当您从 R-Studio 运行闪亮的应用程序时,您将命令包含library(shiny)
在闪亮的代码中,然后单击 R-Studio 中的图标按钮“运行应用程序”。但如果没有 R-Studio,您必须加载闪亮,然后使用命令行运行应用程序。对我来说,它通过使用两个 R 代码来工作。首先,我们称它为“loader.R”,其中包含:
library(shiny)
runApp('E:/path_to_your_app/myApp.R', launch.browser=TRUE)
第二个是您的应用程序“myApp.R”:
library(shiny) # you can uncomment this because already in loader.R but leaving it does not harm
ui <- ...
server <- ...
shinyApp(ui = ui, server = server)
该选项launch.browser=TRUE
将在浏览器中打开应用程序。默认情况下,Shiny 使用 R-Studio 中的“窗口”选项运行,没有 R-Studio 将无法运行。
假设您已经在路径 E:/some_path/rlib 中安装了必要的库。然后,您必须在 loader.R 代码中指定它.libPaths
:
.libPaths("E:/some_path/rlib")
library(shiny)
runApp('E:/path_to_your_app/myApp.R', launch.browser=TRUE)
第 4 步。创建一个名为“call_siny_app.bat”的批处理文件来调用您的闪亮应用程序。这将包含:
set RSCRIPT=C:\Programme\R\R-4.1.0\bin\Rscript.exe
set SPATH=E:\path_to_your_app
call "%RSCRIPT%" "%SPATH%\loader.R"
代码调用“loader.R”(SPATH
必须指定正确的路径),然后调用“myApp.R”。
您执行从 1 到 4 的步骤,您的同事只需运行 call_siny_app.bat。