gpt4 book ai didi

r - 使conditionalPanel依赖于使用fileInput上传的文件

转载 作者:行者123 更新时间:2023-12-03 09:22:57 24 4
gpt4 key购买 nike

因此,我试图制作一个 Shiny 的应用程序,其中有一个仅在文件上传后才会显示的按钮;为此我使用conditionalPanel。

ui.R:

require(shiny)
shinyUI(pageWithSidebar(
headerPanel("My App"),

sidebarPanel(
fileInput("files", "Choose file"),
conditionalPanel(
condition = "input.files",
actionButton("submitFiles", "Submit files for processing"))),

mainPanel(h3("Nothing to see here"))
))

我不认为我的server.R有任何需要关注的地方,因为上面的示例没有任何作用。在上述条件下,按钮永远不会显示,即条件永远不会为真。

我为自己的条件尝试过的一些事情是 input.files.length > 0input.files.size() > 0,这两者都会导致在我上传文件之前显示按钮。我猜这是因为在选择文件之前input $ files是一个空的data.frame,因此长度/大小为非零,对吗?

在至少完成一个文件上传之前,我可以使用什么条件隐藏按钮?

我认为另一种选择是将 conditionalPanel替换为 uiOutput,并在正在监视input.files( renderUI({actionButton(...)}))的server.R中的watch / isolate块内调用 if (nrow(input$files) < 1) return();那是唯一的方法吗?如果我能以任何一种方式做到这一点,那又是什么使我选择其中一个(除了 conditionalPanel之外,代码更少)?

最佳答案

您必须使用react式输出,以返回上载状态,并将此输出的选项suspendWhenHidden设置为FALSE

更确切地说,在server.R中,您确实具有响应功能,例如getData(),可以从上传的文件中创建数据帧。然后执行以下操作:

  getData <- reactive({
if(is.null(input$files)) return(NULL)
......
})
output$fileUploaded <- reactive({
return(!is.null(getData()))
})
outputOptions(output, 'fileUploaded', suspendWhenHidden=FALSE)

在ui.R中,您可以通过以下方式使用 conditionalPanel():
conditionalPanel("output.fileUploaded",
......

关于r - 使conditionalPanel依赖于使用fileInput上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com