31

目前我有一个 R 闪亮的应用程序,运行它我打开 RStudio 并执行

setwd("C:/Users/Me/Desktop/R/ShinyProject2")
library(shiny)
......
runApp()

从位于我的目录中的 R 脚本。

我将应用程序发送给不知道如何使用 R 的同事进行审查。

所以我只是想知道......有没有一种简单的方法可以编写一个直接打开 UI 的可执行文件,而无需单击打开 R studio 并执行代码?

4

8 回答 8

22

我知道这是一个古老的讨论,但它可能会帮助知道现在可以做到这一点的人。您可以创建一个独立的闪亮应用程序,在计算机上运行而无需安装 R 或任何库。有一种相对简单的方法(目前我只为 Windows 用户做过,但 MacOS 也应该有一些东西),遵循以下详细步骤:http ://www.r-bloggers.com/deploying- desktop-apps-with-r/ 。其他选项可能是在 Shiny 服务器上上传应用程序。

于 2015-07-24T08:00:07.483 回答
21

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 文件。

所以,

  • 你的同事需要安装 R
  • 您需要该安装才能使所有软件包闪亮运行
  • 或者您在代码中添加一堆 install.packages() 行
  • 你需要给他们一个包含闪亮代码的文件夹
  • 您添加一个 Windows .BAT 文件供他们单击
  • 他们运行它,它调用 Rscript.exe 启动你给他们的闪亮包

或者将它托管在 RStudio 家伙的公共闪亮服务器上,但是我们都可以看到它。

于 2013-04-08T17:32:04.517 回答
12

您现在可以将 RInno 包用于此类事情。要进行设置:

install.packages("RInno")
require(RInno)
RInno::install_inno()

然后你只需要调用两个函数来设置一个安装框架:

create_app(app_name = "myapp", app_dir = "path/to/myapp")
compile_iss()

如果您想包含 R,请添加include_R = TRUEcreate_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

于 2017-04-11T13:58:21.297 回答
6

我遇到了同样的问题,并使用了以下两种都可以正常工作的解决方案。

在 shinyapps.io 上发布应用程序

优点:该应用程序可随时随地访问。

缺点:每月只有 25 个活跃小时。

方法:

  1. 转到https://www.shinyapps.io/并创建一个免费帐户
  2. 配置 rsconnect 以将 R 与您的新 shinyapps 帐户链接(shinyapps 文档中的逐步说明)
  3. 在 Rstudio 中,单击“发布”(运行应用按钮旁边)
  4. 从 shinyapps.io 仪表板获取应用程序地址并将其发送给您的同事。

在局域网上共享应用程序

优势:尽可能多的活动时间。

缺点:需要在同一个本地网络上(或使用 VPN)。该应用程序必须在连接到此网络的计算机上持续运行。此外,它一次不能为多个用户执行计算。

方法:你需要在你的电脑上运行app并在局域网上共享,通过将runapp命令改为:

runApp(host="0.0.0.0",port=5050)

然后可以通过http://[your-IP-address]:5050 访问该应用程序(参见:Hosting LAN Shiny apps run from command line

于 2017-09-08T14:54:17.850 回答
3

现在有一种新方法可用于通过“Electron”和“Photon”构建真正独立的 Shiny 应用程序 exe。请参阅以下链接以获取软件包/插件等。

也就是说,RStudio 的 shinyapps.io 或 Binder 部署可能是可访问性和开发方面的更好选择。

于 2020-04-11T21:54:08.103 回答
3

下面是一个快速修复。通过 .转到命令行中的项目目录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'))" &
于 2020-09-14T11:27:11.653 回答
2

我知道这是一个非常古老的讨论,但我最近遇到了这个问题,在尝试了几个选项后,我发现使用 shinyshortcut 包是最好的:

library(shinyShortcut) shinyShortcut(shinyDirectory = getwd(), OS = .Platform$OS.type, gitIgnore = FALSE)
于 2019-06-28T10:18:23.923 回答
0

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。

于 2021-08-26T11:18:26.820 回答