Итак, я пытаюсь сделать блестящее приложение, где у меня есть кнопка, которая отображается только в том случае, если файлы были загружены; для этого им используется условная панель.
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"))
))
Я не думаю, что на моем сервере что-то нужно заботиться. R, поскольку приведенный выше пример ничего не делает. При вышеуказанном условии кнопка никогда не появляется, т.е. Условие никогда не является истинным.
Некоторые вещи, которые я пробовал для моего условия, это input.files.length > 0
, input.files.size() > 0
, оба из которых приводят к тому, что кнопка присутствует, прежде чем я загружу файл. Я предполагаю, что это потому, что входные файлы $являются пустым файлом data.frame перед выбором файлов и поэтому имеют ненулевую длину/размер, верно?
Какое условие я могу использовать, чтобы скрыть кнопку, пока не будет загружен хотя бы один файл?
Я думаю, что другой вариант заключается в замене conditionalPanel
на uiOutput
и вызове renderUI({actionButton(...)})
внутри блока наблюдения/изоляции на сервере .R, который просматривает input.files(if (nrow(input$files) < 1) return()
); это единственный способ? Если я могу сделать это в любом случае, что бы заставить меня выбрать один или другой (за пределами conditionalPanel
, что приводит к меньшему количеству кода)?