- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的 R Shiny 脚本中,我试图使功能使得在第一个子菜单项中,每个 selectInput 值都取决于上一列中的项目选择。数据附上,代码也写好了。但是我无法达到预期的结果。请运行代码并检查,我希望整个服务器逻辑只属于一个功能。谢谢,请帮忙。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
id = "tabs",
menuItem("Charts", icon = icon("bar-chart-o"),
menuSubItem("Sub-item 1", tabName = "subitem1"),
menuSubItem("Sub-item 2", tabName = "subitem2")
))),
dashboardBody(
tabItems(tabItem("subitem1", uiOutput("brand_selector")),
tabItem("subitem2", 4))
))
server <- shinyServer(function(input, output) {
candyData <- read.table(
text = "
Brand Candy value
Nestle 100Grand Choc1
Netle Butterfinger Choc2
Nestle Crunch Choc2
Hershey's KitKat Choc4
Hershey's Reeses Choc3
Hershey's Mounds Choc2
Mars Snickers Choc5
Nestle 100Grand Choc3
Nestle Crunch Choc4
Hershey's KitKat Choc5
Hershey's Reeses Choc2
Hershey's Mounds Choc1
Mars Twix Choc3
Mars Vaid Choc2",
header = TRUE,
stringsAsFactors = FALSE)
output$brand_selector <- renderUI({
box(title = "Data", status = "primary", solidHeader = T, width = 12,
fluidPage(
fluidRow(
Brand_Select <- unique(candyData$Brand),
column(2,offset = 0, style='padding:1px;',
selectInput("Select1","select1",Brand_Select)),
Candy_Select <- candyData$Candy[candyData$Brand == input$Select1],
Candy_Select <- unique(Candy_Select),
column(2,offset = 0, style='padding:1px;',
selectInput("Select2","select2",Candy_Select)),
Value_Select <- candyData$value[candyData$Candy == input$Select2],
column(2, offset = 0,
style='padding:1px;',selectInput("select3","select3",Value_Select ))
)))
})
})
shinyApp(ui = ui, server = server)
最佳答案
您的代码不起作用,因为每次输入之一更改时,整个 renderUI
再次运行,从而重置所有输入,因为它们都是从头开始创建的!
那么我们该如何解决这个问题呢?您可以尝试以下方法。请注意,我删除了很多不必要的格式,因此更容易看到它是如何工作的。
我们在 UI 中创建输入,并添加一些 observeEvents
监听第一个或第二个输入的变化。如果第一个输入改变,这会触发第一个 observeEvent
并将更改 input$Select2
的选择.随后,这将触发第二个 observeEvent
, 从而限制了 input$Select3
中的选择.
我希望这有帮助!
library(shiny)
library(shinydashboard)
candyData <- read.table(
text = "
Brand Candy value
Nestle 100Grand Choc1
Netle Butterfinger Choc2
Nestle Crunch Choc2
Hershey's KitKat Choc4
Hershey's Reeses Choc3
Hershey's Mounds Choc2
Mars Snickers Choc5
Nestle 100Grand Choc3
Nestle Crunch Choc4
Hershey's KitKat Choc5
Hershey's Reeses Choc2
Hershey's Mounds Choc1
Mars Twix Choc3
Mars Vaid Choc2",
header = TRUE,
stringsAsFactors = FALSE)
ui <- fluidPage(
selectInput("Select1","select1",unique(candyData$Brand)),
selectInput("Select2","select2",choices = NULL),
selectInput("Select3","select3",choices=NULL ))
server <- function(input, output,session) {
observeEvent(input$Select1,{
updateSelectInput(session,'Select2',
choices=unique(candyData$Candy[candyData$Brand==input$Select1]))
})
observeEvent(input$Select2,{
updateSelectInput(session,'Select3',
choices=unique(candyData$value[candyData$Brand==input$Select1 & candyData$Candy==input$Select2]))
})
}
shinyApp(ui = ui, server = server)
关于r - 在 R Shiny 中的公共(public)服务器功能下根据先前的 selectInput 更新 selectInput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376156/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!