在我的server.R
文件中,我有一个名为myNet
的被动,会生成visNetwork
。在我的ui.R
中,我有多个标签面板,理想情况下将具有影响visNetwork
的不同输入小部件。
是否可以重复使用相同的绑定?
目前,当我尝试运行类似于下面的代码时,收到错误:Uncaught Duplicate binding for ID vis
。
server.R
myNet <- reactive({
nodes <- df_nodes
edges <- df_edges
visNetwork(nodes, edges, height = '800px')
})
output$vis <- renderVisNetwork(
myNet()
)
ui.R
...
tabPanel("First Panel",
sidebarLayout(
sidebarPanel(
sliderInput("input1", "Title 1",
min=1, max=10, value=1),
sliderInput("input2", "Title 2",
min=1, max=10, value=1),
sliderInput("input3", "Title 3",
min=1, max=10, value=1)
),
mainPanel(
visNetworkOutput("vis", height = '800px') # *** ISSUE HERE***
)
)
),
tabPanel("Second Panel",
sidebarLayout(
sidebarPanel(
sliderInput("input4", "Title 4",
min=1, max=10, value=1),
sliderInput("input5", "Title 5",
min=1, max=10, value=1),
),
mainPanel(
visNetworkOutput("vis", height = '800px') # *** ISSUE HERE***
)
)
), ...
答案 0 :(得分:5)
我最后打开了this GitHub issue。共识似乎是以下是最好的方法:
output$vis_1 <- output$vis_2 <- renderVisNetwork(myNet())
或者,正如评论中所提到的,你可以使用一种不那么干的方法:
output$vis_1 <- renderVisNetwork(myNet())
output$vis_2 <- renderVisNetwork(myNet())
Joe Cheng对GitHub问题做了如下评论:
&#34;允许多个输出共享相同的ID会产生很多粗糙的副作用,甚至会想到它的含义会让我头疼。例如,两个具有相同ID的Leaflet映射 - 但它们在浏览器中都有很多状态,并将该状态传递回客户端。当他们共享相同的ID时,你怎么能理解它?&#34;
所有人都说,并告诉我,使用dynamic UI方法可以解决相同的行为,并使用开关切换通过uiOutput()
向用户显示哪些控件(在ui.R
中文件)和output$ui <- renderUI({...})
(在server.R
文件中)。