R有光泽:用fileInput重新加载数据

时间:2015-01-19 09:18:24

标签: r shiny

有没有办法重新加载用fileInput加载的输入文件? 我想允许用户通过简单的修改和重新加载csv文件来更新他的输入。 似乎重新加载文件不会更新它。 一种解决方法,有助于使用不同的文件名保存修改后的数据。

我已尝试使用actionButton和file.choose()交换fileInput函数,但它无法使用R服务器

这是我的测试代码:

server.R

shinyServer(function(input, output, session) {

getTestOutput <- reactive({
 if(is.null(input$test))
   return(NULL)

isolate({
 writeLines(paste(input$test, collapse = "\n"))
 })
})

getTable <- reactive({
 if( is.null(input$test))
  return(NULL)

 r <- read.csv((input$test)$datapath,sep=";",header = TRUE)
 as.data.frame(r)
})

output$testOutput <- renderPrint({
  getTestOutput()

})

output$testTable <- renderTable({
  if(is.null(getTable())) 
   return(NULL)

  print(getTable())
})
})

ui.R

shinyUI(
 fluidPage(

sidebarPanel(
  fileInput("test","Load a file")
),

mainPanel(
  verbatimTextOutput("testOutput"),
  tableOutput('testTable')
  )
)
)

1 个答案:

答案 0 :(得分:1)

如果Shiny应用程序位于单独的服务器上,那么我认为使用普通的Web浏览器基本上是不可能的;仅仅保存数据文件是不够的,您需要在每次更改后实际执行新的上传。

但是,如果Shiny应用程序正在用户的计算机上运行(即他们自己运行R会话并调用启动Shiny的功能),那么您可以向他们询问路径并使用reactiveFileReader来每当文件发生变化时自动更新结果。