在我的Shiny应用程序中,我的用户可以从服务器上传文件以查看结果。我让用户使用selectInput选择文件,然后单击actionButton来加载文件。我还希望用户能够删除文件并添加新文件,并且我已经使用单独的actionButtons成功设置了该文件。当用户删除或添加我想更新selectInput的文件时,删除的文件不再存在,添加的文件就是。我在observeEvent代码中使用updateSelectInput尝试了这个,但它不起作用。这是删除文件部分的observeEvent:
#Delete parameter files
observeEvent(input$delete,{
file.remove(input$input_file) #deletes the file selected in the input_file widget
choices <- list.files("C:/Users/shiny/testapp/", pattern="*.Rdata")
updateSelectInput(session,"input_file",choices) #supposed to update the input_file widget
})
当我使用此代码运行应用程序时,会发生两件事。在App窗口中,我在input_file小部件的正上方得到了这个文本: [object Object 在我的R控制台中,我得到:
输入到asJSON(keep_vec_names = TRUE)是一个命名向量。在未来 jsonlite的版本,不支持此选项,并命名 向量将被转换为数组而不是对象。如果你想 JSON对象输出,请改用命名列表。见?toJSON。
我在我的shinyServer调用中包含了session
参数:
shinyServer(function(input, output, session)
任何建议都将受到赞赏。
答案 0 :(得分:0)
我发现一个极端的情况也导致此错误。将tabPanel()
放在renderUI()
中之后,updateSelectInput
在我代码的无关区域中刚刚停止工作。
要解决此问题,请将tabPanel保留在ui.R中,然后使用renderUI()
在函数中进行调整,而不是将其全部放入server.R中,例如:updateSelectInput order of operations/race condition