2014-10-19 65 views
1

晚上好,includeHTML for shiny,shinyApps.IO和Dropbox

快速问题,与R/shiny应用程序相关,托管在shinyApps.IO上。

我想要一个HTML文件驻留在我的Dropbox帐户,并使用includeHTML将其包含在闪亮的应用程序中。这样做的主要原因是我的本地机器有一个更新HTML文件(使用knitr生成)的过程,如果我可以从shinyApps.IO访问它,我不必每次都上传它已更新。现在

,对Dropbox的一个RDATA文件可以使用下面的命令序列读取:

load("my_dropbox_credentials.rdata") # assume that file exists 
file.InputData <- "https://www.dropbox.com/s/SOMEDROPBOXCODE?dl=0" 
data.input  <- (GET(url = file.InputData)) 
load(rawConnection(data.input$content)) 

这会将从Dropbox的一个RDATA数据文件,它适用于shinyApps.IO为好。

现在,假设我想为HTML文件做同样的事情,然后将这个文件用includeHTML显示在一个闪亮的应用程序中。有谁知道如何做到这一点?

任何建议,将理解的是,

菲利普

回答

3

下面是一个说明将收存箱的HTML有光泽的应用程序的最小例子。关键点是设置content(request, as="text")并将矢量呈现为文本。

require(shiny) 
require(httr) 

request <- GET(url="https://dl.dropboxusercontent.com/s/rb0cnyfiz2fgdaw/hello.html") 
dropbox.html <-content(request, as="text") 

runApp(
    list(
    ui = fluidPage(
     titlePanel("Dropbox HTML file"), 
     mainPanel(
     htmlOutput("includeHTML") 
     ) 
    ), 
    server = function(input, output){ 
     output$includeHTML <- renderText({dropbox.html}) 
    } 
    ) 
) 

独立ui.R和server.R

ui.R

require(shiny) 

shinyUI = fluidPage(
    titlePanel("Dropbox HTML file"), 
    mainPanel(
    htmlOutput("includeHTML") 
) 
) 

server.R

require(shiny) 
require(httr) 

request <- GET(url="https://dl.dropboxusercontent.com/s/rb0cnyfiz2fgdaw/hello.html") 
dropbox.html <-content(request, as="text") 

shinyServer(function(input, output){ 
    output$includeHTML <- renderText({dropbox.html}) 
}) 
+0

喜cdeterman - 非常感谢,你的榜样效果很好。然而,一个复杂的问题是:一旦我尝试将代码分解成server.R和ui.R文件,我会得到:“错误:无法打开连接”。 有没有办法保持“2文件”结构? – PMaier 2014-10-20 19:09:21

+0

@PMaier,你有server.R文件中的请求和dropbox.html语句吗? – cdeterman 2014-10-20 19:14:02

+0

cdeterman - 得到它的工作!我有一个自定义的CSS文件,搞砸了。再次感谢,这真的很酷! – PMaier 2014-10-20 19:34:07