有没有办法重新加载使用 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')
)
)
)
如果 Shiny 应用程序位于单独的服务器上,那么我相信使用普通的网络浏览器根本不可能实现这一点;仅仅保存数据文件是不够的,您需要在每次更改后实际执行新的上传。
但是,如果 Shiny 应用程序正在用户的计算机上运行(即他们自己运行 R 会话并调用启动 Shiny 的函数),那么您只需向他们询问路径并使用reactiveFileReader
每当文件更改时自动更新结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)