有没有办法重新加载用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')
)
)
)
答案 0 :(得分:1)
如果Shiny应用程序位于单独的服务器上,那么我认为使用普通的Web浏览器基本上是不可能的;仅仅保存数据文件是不够的,您需要在每次更改后实际执行新的上传。
但是,如果Shiny应用程序正在用户的计算机上运行(即他们自己运行R会话并调用启动Shiny的功能),那么您可以向他们询问路径并使用reactiveFileReader
来每当文件发生变化时自动更新结果。