includeHTML for shiny,shinyApps.IO和Dropbox

时间:2014-10-19 03:54:04

标签: r dropbox shiny

晚上好,

快速提问,与有光泽的应用程序相关,托管在shinyApps.IO上。

我想在我的Dropbox帐户中放置一个HTML文件,并使用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在闪亮的应用程序中显示该文件。有谁知道如何做到这一点?

任何建议都将不胜感激,

菲利普

1 个答案:

答案 0 :(得分:3)

这是一个最小的示例,演示了如何将Dropbox 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})
})