Pour les besoins d'une app, je dois utiliser 2 fileInput(), je souhaitais en utiliser 2 distincts. Je pense que je vais en utiliser 1 seul au final, avec l'option multiple=T pour contourner ce problème.
Mais j'aimerai comprendre le fonctionnement de ConditionalPanel(), je souhaiterai ;
Si le premier fileInput est non nul (un fichier a été importé) on affiche le nom du fichier 1
Le nom du 2eme fichier est affiché tout le temps sauf quand il n'y en a pas. on affiche "No file selected (file2)"
Comment fonctionne la condition avec un fileInput qui peut-être null au départ ?
j'ai mis des print() partout, pour la traçabilité..
(ce n'est qu'un exemple reproductible de ce que je souhaite faire, pas la vraie application)
Code : Tout sélectionner
if (interactive()){
ui <- fluidPage(
titlePanel("Application Shiny avec menu dynamique"),
sidebarLayout(
sidebarPanel(
width = 4,
fileInput("file1", "input file 1:"),
fileInput("file2", "input file 2:"),
),
mainPanel(
conditionalPanel(
condition = "input.file1 != null",
textOutput("file1_name")),
textOutput("file2_name")
)
)
)
server <- function(input, output, session) {
output$file1_name <- renderText({
if (is.null(input$file1)) {
print("file 1 no file")
return("No file selected (file1)")
} else {
print("file 1 file")
return(paste0("file 1 :", input$file1$name))
}
})
output$file2_name <- renderText({
if (is.null(input$file2)) {
print("file 2 no file")
return("No file selected (file2)")
} else {
print("file 2 file")
return(paste0("file 2 :", input$file2$name))
}
})
}
shinyApp(ui, server)
}
il n'affiche jamais le nom du 1er fichier.. et je ne comprend pas pourquoi,
j'ai testé plein de chose :
Code : Tout sélectionner
condition = "input.file1 !== null", # s'affiche pas
condition = "input.file1 != 'null'", # s'affiche tout le temps
condition = "input.file1 !== 'null'", # s'affiche tout le temps
Merci