问题描述
我正在尝试创建一个简单的闪亮仪表板,以表格的形式显示值。为了以表格形式显示数据,我使用了select输入语句和renderDT()。请找到下面的代码。下面的代码只是我要执行的操作的一个示例。
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(dplyr)
d <-
data.frame(
Product_Name = c(
"Table","Chair","Bed","Table","Bed"
),Product_desc = c("X","X","Y","Z","Z"),Product_cat = c(1,2,3,4,5,6,9,7,6)
)
ui <- shinyUI(fluidPage(
useShinydashboard(),tabPanel(
"Plot",sidebarLayout(
sidebarPanel(
selectInput(
"product_name","Product Name",choices = NULL,selected = FALSE,multiple = FALSE
),selectInput(
"Category","Product Category",multiple = TRUE
),#width = 2,position = "bottom"),mainPanel(DT::DTOutput("table1"))
)
)
))
server <- function(input,output,session) {
updateSelectInput(
session,"product_name",choices = unique(d$Product_Name)
)
observeEvent(input$product_name,{
y <- input$product_name
x <- d %>% select(Product_Name,Product_cat) %>% filter(Product_Name %in% y) %>%
select(Product_cat)
updateSelectInput(
session,"Category",choices = (x)
)
w <- input$Category
z <- d %>% filter(Product_Name %in% y,Product_cat %in% w)
output$table1 <-
DT::renderDT(z)
})
}
shinyApp(ui,server)
特定产品将具有多个所属类别。用户选择他们需要查看的那些类别集。
现在我面临的问题是产品类别。我想动态地对某些类别进行分组。例如,如果用户不想查看产品表的类别1、4、9、3,而是希望查看产品表的分类类别(例如1-4)。如何在闪亮的应用程序中动态地实现这一目标?
我不想对源数据进行任何更改。此外,分组可能会因要使用该分组的每个用户而异。在数据集中进行预定义的分组是没有意义的。
因此,用户流程如下。
- 用户选择产品名称
- 根据产品名称,产品类别将显示在下拉框中。可以选择多个类别值。
- 一旦用户在下拉框中选择值,则表将显示在mainPanel()中。
例如。
- 让用户选择产品名称为“表格”
- 接下来,下拉列表中的“产品类别”选项将为1、4、9、3。
- 让用户选择值1和9。现在将显示具有产品名称为Table且属于类别1和9的值。
我的期望是“用户是否有能力在Shiny Application中动态地将类别分为1-9、1-4等?
请告诉我您的建议。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)