gpt4 book ai didi

r - 在 Shiny 应用程序中使用函数渲染 UI(selectInput())

转载 作者:行者123 更新时间:2023-12-04 01:59:14 25 4
gpt4 key购买 nike

这是server.r

server <- function(input, output) {
output$species <- renderUI({
selectInput("species",
label = "blah",
choices = as.list(unique(iris$Species)))
})
}

然后在ui.r中结束

ui <- fluidPage(
fluidRow(
uiOutput("species")
)

这按预期工作,下拉选择输入如下所示: enter image description here

由于我有多个功能,我需要在我的实际数据框中创建一个类似的过滤器,我尝试用一​​个函数来做同样的事情:

在服务器.r

  outputFilters <- function(id, df) {
output$id <- renderUI({
selectInput(id,
label = "blah",
choices = as.list(unique(df$id)))
})
}

outputFilters("species", iris)

然后在 ui.r 中和之前一样 uiOutput("species")

但是,现在没有出现下拉列表。大概我的功能有缺陷。如何使用函数生成下拉菜单?

最佳答案

请注意,在这种情况下,您也可以不使用单独的函数,方法是将所需的 ui 组件包装在 lapply 中,或者将 lapply 放在 uiOutput 中 一次创建所有输入,下面是这两种情况的示例。希望这对您有所帮助!

ibrary(shiny)

ui <- fluidPage(
uiOutput('Species'),
uiOutput('Sepal.Length'),
h2('All inputs: '),
uiOutput('my_inputs')
)


server <- function(input, output) {

# Use lapply to create multiple uiOutputs.
lapply(colnames(iris), function(x){
output[[x]] <- renderUI({
selectInput(paste0('input_',x),
label = x,
choices = as.list(unique(iris[['x']])))
})
})

# Create all dropdown's at once.
output$my_inputs <- renderUI({
lapply(colnames(iris), function(x){
selectInput(paste0('input_',x),
label = x,
choices = as.list(unique(iris)))
})
})

}

shinyApp(ui, server)

关于r - 在 Shiny 应用程序中使用函数渲染 UI(selectInput()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48514738/

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