gpt4 book ai didi

r - 我可以在单个 Shiny 仪表板模块中包含多个 UI 元素吗?

转载 作者:行者123 更新时间:2023-12-03 23:08:21 24 4
gpt4 key购买 nike

放置 非常方便进入menuItem(menuSubItems()) dashboardSidebar() 的一部分.但我希望将 UI 和服务器的几个元素编码到模块中,这样我就可以遵守 框架......如果不为单个模块创建多个 UI 功能,我看不到一种明确的方法。我看过 shinydashboard golem github 上的示例而且这个例子太简单了,没有帮助。

例如,有没有办法可以做到这一点?

以模块格式:

 library(shiny)
library(shinydashboard)

### The Sidebar Menu with a Widget Subitem
mod_myAppSidebar_ui<-function(id) {
ns <- NS(id)
tagList(menuItem("Attributes", tabName="ourdata",
textInput("textSearch","SQL Search String", value = "")))
}

### The Dashboard Body output
mod_myAppBody_ui<-function(id) {
ns <- NS(id)
tagList(box(shiny::dataTableOutput(outputId = "OutputData")))
}

mod_myApp_server<-function(input, output, session) {
ns <- session$ns
output$OutputData<-shiny::renderDataTable({
somedata=data.frame(Rows=letters,Indexes=1:length(letters))
somedata[grepl(tolower(input$textSearch),somedata$Rows),]
})
}

### DashboardPage requires separate arguments for the UI elements
ui <- dashboardPage(header = dashboardHeader(title = "Rosetta"),
sidebar = dashboardSidebar(mod_myAppSidebar_ui("MySearch")),
body = dashboardBody(mod_myAppBody_ui("MySearch")))

server <- function(input, output, session) {
callModule(mod_myApp_server, "MySearch")
}

shinyApp(ui,server)

有没有办法让这种事情发挥作用?小部件没有显示,可能是因为我认为模块化框架不允许我为一个功能制作两个不同的 UI 元素。

最佳答案

好吧,所以我得到了这个工作......令人惊讶的是并没有花费太多。我不知道我的应用程序的复杂性是否会破坏这一点,但对于任何希望这样做的人来说,这可能会有所帮助:

library(shiny)
library(shinydashboard)
library(DT)

mod_myAppSidebar_ui<-function(id) {
ns <- NS(id)
tagList(menuItem("Attributes", tabName="ourdata",
textInput(ns("textSearch"),"SQL Search String", value = ""),
actionButton(ns("go"),label = "Search")))
}

mod_myAppBody_ui<-function(id) {
ns <- NS(id)
tagList(fluidRow(title = "Data Selected",
box(DT::dataTableOutput(outputId = ns("OutputData")))))
}

mod_myApp_server<-function(input, output, session, r) {
ns <- session$ns

observeEvent( input$go , {
r$textSearch<-input$textSearch
print(r$textSearch)
somedata=data.frame(Rows=letters,Indexes=1:length(letters))
r$chooseData<-somedata[grepl(tolower(input$textSearch),somedata$Rows),]
})

output$OutputData<-DT::renderDataTable(r$chooseData)

}

ui <- dashboardPage(header = dashboardHeader(title = "Rosetta"),
sidebar = dashboardSidebar(mod_myAppSidebar_ui("MySearch")),
body = dashboardBody(mod_myAppBody_ui("MySearch")))

server <- function(input, output, session) {
r<-reactiveValues()
callModule(mod_myApp_server, "MySearch", r)
}

shinyApp(ui,server)

关于r - 我可以在单个 Shiny 仪表板模块中包含多个 UI 元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60819976/

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