Rstudio Shiny - 从Websource更新data.frame

时间:2014-02-21 19:00:17

标签: r download dataframe shiny import-from-csv

我正在尝试创建一个闪亮的应用程序。

我希望从网上下载CSV文件并将其存储在本地计算机上,然后执行分析。

我目前的做法是:

ui.R

library(shiny)

shinyUI(pageWithSidebar(

  # Application title
  headerPanel("TEST"),

  sidebarPanel(
    sliderInput("range", "Date Range:",
                min = 0, max = 15, value = c(0,15))
  ),

  # Show a tabset that includes a plot, summary, and table view
  # of the generated distribution
  mainPanel(
    tabsetPanel(
      tabPanel("Plot", plotOutput("plot"))
  )
))

server.R

library(shiny)

shinyServer(function(input, output) {

datasetInput <- function(){

  x1 <- strptime(Sys.time(), "%Y-%m-%d %H:%M:%S")
  x2 <- strptime(file.info("/srv/shiny-server/Data/current.csv")$mtime, "%Y-%m-%d %H:%M:%S")

if ( difftime(x1, x2, units='mins') > 20 ){
  str <- "wget http://www.web.com/file.csv -O /srv/shiny-server/Data/current.csv"
  system(str)
}
    data <- read.csv("/srv/shiny-server/Data/current.csv")
    return(data)
}

output$plot <- renderPlot({

data <- datasetInput()
plot(data)

})

所以,一切正常。数据绘制完美。问题是wget脚本没有被调用。无论我把它放在哪里。

为简单起见,我的主要目标是在应用运行时下载并保存CSV文件。然后读入该CSV文件作为我的主数据帧。

最终目标是让我的应用程序每次有人对应用程序执行任何操作时都要进行时间检查(检查文件是否早于20分钟)。如果它比较旧,我想下载/保存文件,并更新我的数据框。

* note * 使用wget函数可以解决访问受密码保护的CSV文件的问题。

这里讨论问题/解决方案: R Import - CSV file from password protected URL - in .BAT file

我对Shiny的工作原理不太了解,用于生成Shiny应用程序的代码主要来自: http://rstudio.github.io/shiny/tutorial/#tabsets

1 个答案:

答案 0 :(得分:1)

尝试使用httr包而不是原始wget。这是一个Shiny应用程序的示例,它还下载远程CSV文件并对其进行解析。 https://github.com/trestletech/dallas-police/blob/master/shiny/server.R

另外,您可能会发现this tutorial有价值,因为我认为您可以使用reactiveFunction作为数据输入的来源。