Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在屏幕上具有不同输出的选项卡之间共享一些ui_R_Shiny - Fatal编程技术网

R 在屏幕上具有不同输出的选项卡之间共享一些ui

R 在屏幕上具有不同输出的选项卡之间共享一些ui,r,shiny,R,Shiny,我希望有一个ui元素,例如一个闪亮应用程序的一个选项卡上的单选按钮与另一个选项卡上的ui“相同”或链接。可能还有其他选项卡不共享该ui元素 例如,当我在“绘图”选项卡中选择“距离”时,我希望在转到下面代码中的“摘要”选项卡时也选择该距离 library(markdown) library(shiny) ui <- navbarPage("Navbar!", tabPanel("Plot", sidebarLayout(sidebarPanel(

我希望有一个ui元素,例如一个闪亮应用程序的一个选项卡上的单选按钮与另一个选项卡上的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)
以下问题链接了选项卡,但带有超链接:

这也有点与下面的相反:


将选项卡放入侧边栏布局是一种方法

ui <- fluidPage(sidebarLayout(
 sidebarPanel(radioButtons("yaxis1", "y-axis", 
   c("speed"="speed", "dist"="dist"),selected = "speed"
                             )), 
 mainPanel(tabsetPanel(
  tabPanel("Plot", plotOutput("plot")),
  tabPanel("Summary", verbatimTextOutput("summary"))
 )
 )
)
)


    # Server ------------------------------------------
    server <- function(input, output, session) {
      output$plot <- renderPlot({ plot(cars[['speed']], 
        cars[[input$yaxis1]]) })
      output$summary <- renderPrint({ summary(cars[[input$yaxis1]]) 
     })
    }
    shinyApp(ui, server)
    ```

ui您可以使用函数
observe({})
链接您的
单选按钮
。它将创建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)
库(闪亮)
#用户界面----------------------------------------------------------

ui您可以使用侧边栏面板吗?不,因为侧边栏将由所有选项卡使用,而我仍然希望能够为每个选项卡自定义侧边栏。@student您可以在侧边栏中使用
conditionalPanel
。是的,您是对的。我想阿尔帕内尔会管用的。谢谢。这不是我想要的,因为我希望其他选项卡不使用相同的ui。我喜欢你的解决方案。但是,我想知道是否有一种方法可以避免重复单选按钮的代码。
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)