【问题标题】:Using a downloaded/external file in Shiny App在 Shiny App 中使用下载的/外部文件
【发布时间】:2014-11-07 03:30:36
【问题描述】:

我正在尝试创建一个闪亮的应用程序,该应用程序使用谷歌电子表格中的外部可用信息,我正在将其下载到临时 .csv 文件中。该应用程序在我的本地计算机上正常运行,但是当我尝试将其推送到 shinyapps.io 时,该应用程序失败了。我尝试使用一个简单的示例重新创建下面的错误。闪亮的应用程序可以在这里找到:https://n8sty.shinyapps.io/test/。我已经复制了下面本地工作的 server.R 和 ui.R 文件。

我认为问题在于服务器无法以与我的本地计算机相同的方式处理下载外部 google sheet 文件。有谁知道如何在闪亮的应用中使用谷歌文档?

ui.r

require(shiny)

shinyUI(fluidPage(

  mainPanel(
    tableOutput("table")
    )

  ))

server.r

require(shiny)

td <- tempdir()
tf <- tempfile(pattern = 'test', tmpdir = td, fileext = '.csv')
url <- 'https://docs.google.com/spreadsheets/d/1c1ZI0P0ydunm-wc1eb3-jYbWfwMZQc4eAyWlHJut2wY/export?usp=sharing&format=csv'
download.file(url, tf, method = 'auto', quiet = TRUE)
df <- read.csv(tf)

shinyServer(function(input, output) {

  output$table <- renderTable({
    df
    })

})

谢谢

【问题讨论】:

  • @MrFlick 似乎非常相关。感谢您的指点。如果有人想在答案上击败我,请随意。如果没有,我明天有机会再发。

标签: r shiny


【解决方案1】:

在通过 SO 和网络的其他广阔世界进行大量搜索之后,这就是我想出的目前有效的方法。一个简短的警告,看起来随着开发中的包发生变化,并且随着谷歌改变其文档的格式,几个月前用于阅读谷歌表格的代码不再有效。

我从 mosaic 包的开发版本中的 fetchGoogle(...) 函数中获得灵感,定义了以下函数。

loadGoogSheet <- function(URL, key = NULL,
                          stringsAsFactors = default.stringsAsFactors(), na.strings = "NA",
                          colClasses = NA, blank.lines.skip = TRUE
                          ) 
{

  #.try_require("RCurl")
  if (missing(URL) & !is.null(key)) 
    URL = paste("https://docs.google.com/spreadsheet/pub?key=", 
                key, "&single=TRUE&gid=0", "&output=csv", sep = "")
  s = RCurl::getURLContent(URL)
  foo = textConnection(s)
  b = read.csv(foo,
               stringsAsFactors = stringsAsFactors,
               na.strings = na.strings,
               colClasses = colClasses,
               blank.lines.skip = blank.lines.skip
  )
  close(foo)
  return(b)

}

根据您的机器处理证书的方式,您可能需要在上述代码之前包含这段代码:

require(RCurl)
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2013-06-11
    • 1970-01-01
    • 2014-02-18
    • 2016-01-06
    相关资源
    最近更新 更多