【问题标题】:shiny with portable R?用便携式 R 闪亮吗?
【发布时间】:2013-05-30 17:08:53
【问题描述】:

为了使用 R 构建一些 Web 服务,我通常使用RApache,但我想看看 Shiny 看看它能做什么。 问题是,对于我设想使用它的这种情况,我没有可以运行 R & Shiny 的可用服务器,也无法将数据传输到运行它的另一台机器。我只有一个桌面,我想向其他用户展示 Shiny 应用程序,而不需要他们在桌面上安装 R,也不需要为安装而打扰 IT。

因此我的问题。我是否可以在与同事共享的共享驱动器上安装 R 便携式 - http://sourceforge.net/projects/rportable/files/R-Portable/,并且 Shiny 应用程序可以与便携式 R 版本进行交互。 如果这是可能的,是否有人尝试过并愿意分享他的一些代码以证明它有效?

【问题讨论】:

  • 我认为这是超级用户的问题,而不是堆栈交换,因为它的软件安装,而不是编码
  • 我对软件安装不感兴趣。我知道该怎么做。我只是对 Shiny 如何知道与哪个 R 通信感兴趣。
  • 我在工作中经常这样做。我在文件服务器上安装了 R + 库,并通过文件服务器与 ui.r en server.R 文件共享地图。

标签: r shiny


【解决方案1】:

这应该可以正常工作,假设您可以让您的 R-Portable 设置拥有一个可移植的包库。 Shiny 不会启动 R,您运行 R,然后从那里加载并启动您的 Shiny 应用程序(使用 shiny::runApp()),然后浏览器和 R 进程使用 TCP 进行通信。

如果您的应用不需要私有化,您也可以在 RStudio 自己的 Shiny 主机上申请一个帐户。它在测试版中是免费的。 https://rstudio.wufoo.com/forms/shiny-server-beta-program/

【讨论】:

  • 太棒了。感谢您的确认。我会试试 R-portable 设置。
  • shiny 默认在端口 8100 上运行和侦听,但我看不出它是仅在本地主机上还是在所有接口上。假设它可以监听外部接口,那么您只需要运行它并将 URL 提供给您想查看您的应用的任何人。端口 80 以外的端口可能是人们的防火墙的问题,并且端口 80 需要 root 权限(至少在 linux 上),因此您将以 root 身份运行 R...
  • 嗯,我试过带库的 R-portable(闪亮); runExample("01_hello");但我得到:“as.environment(x) 中的错误:'as.environment' 的对象无效”,由 cacheContext
【解决方案2】:

操作系统:Windows 7 - 64 位

按照下面链接中说明的步骤操作,除了创建一个批处理文件来运行闪亮的应用程序,因为在该网络链接中启动网络浏览器的建议不起作用(网络浏览器打开时没有应用程序内容) ,至少对我来说。

此批处理脚本查找 UNUSED UNPRIVILEGED PORT 并使用它从 USB 闪存驱动器使用便携式 google chrome 网络浏览器打开本地网络应用程序 (Portable R Shiny App)。在上面的链接中,作者建议创建单独的 runShinyApp.R 和 run.bat 被压缩为一个批处理文件,如下所示。

@echo off
    title 'My Shiny APP'

    setlocal ENABLEDELAYEDEXPANSION

    for /l %%X in (1025,1,65535) do (   
        netstat -o -n -a | findstr :%%X 
        if !ERRORLEVEL! neq 0 ( 
            set avail_port=%%X
            goto eof
        ) 
    )

    :eof
    SET ROPTS=--no-save --no-environ --no-init-file --no-restore --no-Rconsole

    start "" ".\GoogleChromePortable\App/Chrome-bin/chrome.exe" "http://localhost:!avail_port!/"

    R-Portable\App\R-Portable\bin\Rscript.exe %ROPTS% -e "require(methods); shiny::runApp('./shiny', launch.browser = FALSE, port = !avail_port!)" 1> ShinyAppOut.log 2> ShinyAppMsg.log

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2019-11-15
    • 2011-02-01
    • 2011-02-20
    相关资源
    最近更新 更多