2014-02-21 34 views
0

我正在嘗試創建一個Shiny應用程序。Rstudio Shiny - 從Websource更新數據框

我希望它從網上下載一個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

我不知道很多關於如何閃亮的作品,用來產生閃亮的應用程序的代碼大部分來自: http://rstudio.github.io/shiny/tutorial/#tabsets

回答

1

嘗試使用httr包而不是原始的wget。下面是一個Shiny應用程序的示例,它也下載遠程CSV文件並對其進行分析。​​

另外你可能會發現this tutorial有價值,因爲我認爲你可以使用reactiveFunctions作爲你的數據輸入源。