闪亮的便携式R?

11

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

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


我认为这更适合在超级用户而不是堆栈交换中提问,因为它涉及软件安装而不是编码。 - Simkill
我对软件安装不感兴趣,因为我知道如何操作。我只是想知道Shiny是如何知道与哪个R进行通信的。 - user1600826
我经常在工作中这样做。我在文件服务器上安装了 R + 库,并通过文件服务器将该映像与 ui.r 和 server.R 文件共享。 - Jonas Tundo
2个回答

3
假设您可以设置一个便携式包库,那么这应该可以正常工作。Shiny并不启动R,您需要运行R,从中加载和启动Shiny应用程序(使用shiny::runApp()),然后浏览器和R进程使用TCP通信。
如果您的应用程序不需要保密性,您还可以申请RStudio自己的Shiny托管帐户。在测试期间是免费的。 https://rstudio.wufoo.com/forms/shiny-server-beta-program/

太好了。感谢确认。我会尝试使用R-portable设置。 - user1600826
shiny默认在8100端口运行并监听,但我无法确定它是否只在本地主机上运行或者所有接口都可以访问。如果假设它能够监听外部接口,那么你只需要运行它并将URL提供给任何想要查看你的应用程序的人就好了。然而,除80端口之外的其他端口可能会受到人们防火墙的限制,而80端口则需要root权限(至少在Linux上),所以你将作为root用户运行R... - Spacedman
嗯,我在R-portable上尝试了library(shiny); runExample("01_hello");但是我得到了一个错误:"Error in as.environment(x) : invalid object for 'as.environment'",这是由cacheContext <- CacheContext$new()引起的。有什么线索可以解决这个错误吗?然而,使用非便携式R运行它是有效的...那么这两者之间有什么区别呢? - user1600826

2

操作系统:Windows 7 - 64位

按照下面链接中所述的步骤操作,但是要创建一个单一的批处理文件来运行Shiny应用程序,因为在该网页链接中建议启动Web浏览器并不能正常工作(Web浏览器打开但没有应用程序内容),至少对于我来说是这样。

此批处理脚本找到一个未使用的非特权端口,并使用它来打开一个本地Web应用程序(Portable R Shiny App),使用便携式Google Chrome Web浏览器从USB闪存驱动器中运行。在上述网站中,作者建议创建独立的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接