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。