gpt4 book ai didi

r - 在 shiny 上具有不同输出的选项卡之间共享一些 ui

转载 作者:行者123 更新时间:2023-12-05 04:08:35 26 4
gpt4 key购买 nike

我希望有一个 ui 元素,例如 Shiny 应用程序的一个选项卡上的单选按钮与另一个选项卡上的 ui “相同”或链接。可能有其他选项卡不共享该 ui 元素。

例如,当我在下面的代码中转到摘要选项卡时,我希望在绘图选项卡中选择距离时也选择它。

library(markdown)
library(shiny)
ui <- navbarPage("Navbar!",
tabPanel("Plot", sidebarLayout(sidebarPanel(
radioButtons("yaxis1", "y-axis", c("speed"="speed", "dist"="dist"),
selected = "speed"
)),
mainPanel( plotOutput("plot") ))),

tabPanel("Summary", sidebarLayout(sidebarPanel(
radioButtons("yaxis2", "y-axis", c("speed"="speed", "dist"="dist")
)),
mainPanel(verbatimTextOutput("summary"))))
)
# Server ------------------------------------------
server <- function(input, output, session) {
output$plot <- renderPlot({ plot(cars[['speed']], cars[[input$yaxis1]]) })
output$summary <- renderPrint({ summary(cars[[input$yaxis2]]) })
}
shinyApp(ui, server)

您可以使用以下方式运行该应用:

shiny::runGist('c8d5131c4e903817316e23e98cf088f9')

以下问题链接选项卡,但带有超链接:

R shiny build links between tabs

它也与以下内容相反:

How to use the same output binding on different tab panels in shiny

最佳答案

您可以使用函数 observe({}) 链接您的 radioButtons。它将创建 javascript 来监视对您引用的 input$variables 的更改,然后执行操作,例如更新其他按钮选择以匹配。

library(shiny)
# UI ----------------------------------------------------------
ui <- navbarPage("Navbar!",
tabPanel("Plot", sidebarLayout(sidebarPanel(
radioButtons("yaxis1", "y-axis", c("speed"="speed", "dist"="dist"),
selected = "speed"
)),
mainPanel( plotOutput("plot"),
textOutput("test2")))), # for input checking

tabPanel("Summary", sidebarLayout(sidebarPanel(
radioButtons("yaxis2", "grouping-var", c("speed"="speed", "dist"="dist")
)),
mainPanel(
verbatimTextOutput("summary"),
textOutput("test1")
)))
)
# Server ------------------------------------------
server <- function(input, output, session) {

observe({
x <- input$yaxis1
updateRadioButtons(session, "yaxis2", selected = x)
})

observe({
y <- input$yaxis2
updateRadioButtons(session, "yaxis1", selected = y)
})

output$test1 <- renderPrint({cat("yaxis1", input$yaxis1)})
output$test2 <- renderPrint({cat("yaxis2", input$yaxis2)})
output$plot <- renderPlot({ plot(cars[['speed']], cars[[input$yaxis1]]) })
output$summary <- renderPrint({ summary(cars[[input$yaxis2]]) })
}
shinyApp(ui, server)

关于r - 在 shiny 上具有不同输出的选项卡之间共享一些 ui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226158/

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