Here is a reprex for one possible solution to this type of thing
library(shiny)
library(tidyverse)
ui <- fluidPage(
sidebarLayout(sidebarPanel =
div(
textInput("myx","type an x string","example"),
selectInput("funcselector", "select a func",
choices = c("funca","funcb")),
uiOutput("additionalInputs")
),
mainPanel = div(
verbatimTextOutput("resulttext")
))
)
server <- function(input, output, session) {
myn <- reactiveVal(3)
funca <- function(x){
paste0("funca : ", x)
}
funcb <- function(x,n){
paste0("funcb : ", rep(x,n))
}
output$additionalInputs <- renderUI({
if(req(input$funcselector)=="funca"){}
else if(req(input$funcselector)=="funcb"){
return(numericInput("n","choose rep",value = myn(),min=1,max=5))
}
return(div())
})
observeEvent(input$n,
myn(input$n))
my_result <- reactive({
switch (req(input$funcselector),
"funca" = funca(req(input$myx)),
"funcb" = funcb(req(input$myx),req(input$n)))
})
output$resulttext <- renderPrint({
req(my_result())
})
}
shinyApp(ui, server)