【问题标题】:possible to run RShiny app without opening an R environment?可以在不打开 R 环境的情况下运行 R Shiny 应用程序吗?
【发布时间】:2013-03-30 21:09:40
【问题描述】:

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

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

来自我目录中的 R 脚本。

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

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

【问题讨论】:

  • 用 C 签入linking libR,你应该被排序。如果您想了解更多信息,请发表评论,我会尽力为您找到一些代码。
  • 如果您在工作场所(与同事共享文件夹)有文件服务器系统,则可以跳过前三点。只需安装 R 和软件包即可在共享文件夹中运行闪亮。它更易于维护,因为您的所有同事都使用相同的 R 版本 + 包。

标签: r shiny executable


【解决方案1】:

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

【讨论】:

  • 一般建议复制在解决方案中,以防链接被删除
【解决方案2】:

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 开发人员的公共闪亮服务器上,然后我们都可以看到它。

【讨论】:

  • 非常感谢。不要以为我可以上传到微光,有太多的公司机密危在旦夕。
  • 如果您在工作场所(与同事共享文件夹)有文件服务器系统,则可以跳过前三点。只需安装 R 和软件包即可在共享文件夹中运行闪亮。它更容易维护,因为您的所有同事都使用相同的 R 版本 + 包。
【解决方案3】:

您现在可以将 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 参数。您还可以将 GitHub 包包含到 remotes 参数中:

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

【讨论】:

  • RInno 说它不支持 Linux,但有支持的版本或替代方案吗?
【解决方案4】:

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

在 shinyapps.io 上发布应用

优势:该应用可随时随地访问。

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

方法:

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

在局域网上共享应用程序

优势:您需要多少活动时间。

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

方法:你需要在你的电脑上运行该应用,并通过将runapp命令改为:

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

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

【讨论】:

    【解决方案5】:

    下面是一个快速修复。通过cd 进入命令行中的项目目录。那么

     R -e "shiny::runApp(port=8000,host = getOption('shiny.host', '10.10.10.10'))"
    

    现在 URL 10.10.10.10:8000 将处于活动状态。

    要在您注销后仍保持 URL 有效,可以使用nohup。显然,这不是生产环境所需的设置。

     nohup R -e "shiny::runApp(port=8000,host = getOption('shiny.host', '10.10.10.10'))" &
    

    【讨论】:

      【解决方案6】:

      现在有一种新方法可用于通过“电子”和“光子”构建真正独立的 Shiny 应用程序 exe。有关软件包/插件等,请参见以下链接。

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

      【讨论】:

        【解决方案7】:

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

        library(shinyShortcut) shinyShortcut(shinyDirectory = getwd(), OS = .Platform$OS.type, gitIgnore = FALSE)
        

        【讨论】:

        • 感谢您的解决方案。您知道即使 R 没有下载到计算机上,这是否仍然有效?
        • 据我所知,你必须安装 R
        【解决方案8】:

        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。

        【讨论】:

          猜你喜欢
          • 2013-09-07
          • 2023-04-10
          • 1970-01-01
          • 2019-03-27
          • 1970-01-01
          • 1970-01-01
          • 2016-04-15
          • 2015-07-19
          • 2022-01-13
          相关资源
          最近更新 更多