Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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 是否可以跨应用程序复制闪亮元素_R_User Interface_Shiny - Fatal编程技术网

R 是否可以跨应用程序复制闪亮元素

R 是否可以跨应用程序复制闪亮元素,r,user-interface,shiny,R,User Interface,Shiny,我正在开发一个简单的闪亮应用程序,它由多个面板组成,ui.R的结构类似于下面的代码: shinyUI(navbarPage("Example", tabPanel("Sample analysis", sidebarLayout( sidebarPanel( slide

我正在开发一个简单的闪亮应用程序,它由多个面板组成,
ui.R
的结构类似于下面的代码:

shinyUI(navbarPage("Example",
                   tabPanel("Sample analysis",
                            sidebarLayout(
                                sidebarPanel(
                                    sliderInput("bins",
                                                "Number of bins:",
                                                min = 1,
                                                max = 50,
                                                value = 30)
                                ),
                                mainPanel(
                                    plotOutput("distPlot")
                                )
                            )),
                   tabPanel("Sample analysis 2",
                            sidebarLayout(
                                sidebarPanel(
                                    sliderInput("bins",
                                                "Number of bins (again!)",
                                                min = 1,
                                                max = 50,
                                                value = 30)
                                ),
                                mainPanel(
                                    plotOutput("distPlot")
                                )
                            ))
))
每个面板提供对不同功能的访问,但代码的某些方面是相同的。例如,在上述示例的情况下,每个面板可以提供对一个特定对象的某种选择机制的访问,如跨两个面板复制的
sliderInput
。我感兴趣的是探索是否有可能复制界面的相同部分
x
多次,而无需键入整个
sliderInput
代码


编辑 为了使问题进一步复杂化,在我的职能范围内,我希望在线路上有一个反应性组件:

build_eqls_drop_down <- function(){
    sidebarPanel(selectInput("selection", h5("Selection"), dynamic_vars()),
                 uiOutput("dynamic_list_derived_according_to_selection"))
}

build\u eqls\u drop\u down您只需要使用要复制的元素创建一个函数。稍后只需调用该函数。您可以在那里定义默认参数,但始终尝试在每个元素上使用不同的
inputId
,以避免冲突

下面是使用函数创建带有默认参数的滑块的示例代码。请注意,在第二个选项卡面板中,您可以使用
lappy
复制滑块的次数(在本例中为3次)。还请注意,您可以更改默认参数

library(shiny)

build_slider <- function(id, label="Number of bins:", mxmi=c(1,50), val=30){
    sliderInput(id,
                    label,
                    min = mxmi[1],
                    max = mxmi[2],
                    value = val)
}

runApp(list(
  ui = shinyUI(navbarPage("Example",
        tabPanel("Sample analysis",
            sidebarLayout(
                sidebarPanel(
                    build_slider("bins_1")
                ),
                mainPanel(
                    plotOutput("distPlot_1")
                )
        )),
        tabPanel("Sample analysis 2",
            sidebarLayout(
                sidebarPanel(
                    lapply(1:3, function(k) { 
                        id = paste("bins", k, sep="_")
                        build_slider(id, val = k*10)
                    })
                ),
                mainPanel(
                    plotOutput("distPlot_2")
                )
        ))
    )),

    server = function(input, output, session) { }
))
库(闪亮)

构建\u滑块您可以只拥有一个变量
滑块