R UpdateAbsetPanel不工作
有人知道为什么这个简单的代码不起作用吗? 我试图做的是:每当用户单击运行按钮(R UpdateAbsetPanel不工作,r,shiny,R,Shiny,有人知道为什么这个简单的代码不起作用吗? 我试图做的是:每当用户单击运行按钮(input$runButton)时,使structure选项卡处于活动状态。当我单击运行按钮时,input$runButton的值会被更新,但选项卡不会更改为结构 以下是一个简单的可复制示例: server.R function(input, output, session) { #RUN button observeEvent(input$runButton, { updateTabsetPanel
input$runButton
)时,使structure
选项卡处于活动状态。当我单击运行按钮时,input$runButton
的值会被更新,但选项卡不会更改为结构
以下是一个简单的可复制示例:
server.R
function(input, output, session) {
#RUN button
observeEvent(input$runButton, {
updateTabsetPanel(session, "allResults", 'structure')
})
#VAR SELECTION
output$inputVars <- renderText({
if (input$runButton == 0)
return()
print("Vars Selected")
})
#STRUCTURE RESULT
output$structure <- renderText({
if (input$runButton == 0)
return()
print("Structure Results")
})
}
fluidPage(
titlePanel("Periscope Structure"),
br(),
sidebarPanel(
fileInput(inputId="inFile", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
checkboxInput("header", "Header", TRUE),
numericInput("level", "Structure Level", 3, min = 2, max = 10),
br(),
actionButton("runButton", strong("Run!"))
),
mainPanel(
tabsetPanel(id = "allResults",
tabPanel('Variable Selection', textOutput('inputVars')),
tabPanel('Structure Result', textOutput('structure')))
)
)
谢谢大家! 请注意,您需要为
选项卡面板
分配一个值
,以便可以使用updateTabsetPanel
调用将其激活,因此请尝试以下操作:
require(shiny)
ui <- fluidPage(
titlePanel("Periscope Structure"),
br(),
sidebarPanel(
fileInput(inputId="inFile", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
checkboxInput("header", "Header", TRUE),
numericInput("level", "Structure Level", 3, min = 2, max = 10),
br(),
actionButton("runButton", strong("Run!"))
),
mainPanel(
tabsetPanel(id = "allResults",
tabPanel(value = "inputVars",'Variable Selection', textOutput('inputVars')),
tabPanel(value = "structure",'Structure Result', textOutput('structure')))
)
)
server <- function(input, output, session) {
#RUN button
observeEvent(input$runButton, {
updateTabsetPanel(session, "allResults", 'structure')
})
#VAR SELECTION
output$inputVars <- renderText({
if (input$runButton == 0)
return()
print("Vars Selected")
})
#STRUCTURE RESULT
output$structure <- renderText({
if (input$runButton == 0)
return()
print("Structure Results")
})
}
runApp(shinyApp(ui, server), launch.browser = TRUE)
require(闪亮)
ui请注意,您需要为选项卡面板
分配一个值
,以便可以使用updateTabsetPanel
调用将其激活,因此请尝试以下操作:
require(shiny)
ui <- fluidPage(
titlePanel("Periscope Structure"),
br(),
sidebarPanel(
fileInput(inputId="inFile", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
checkboxInput("header", "Header", TRUE),
numericInput("level", "Structure Level", 3, min = 2, max = 10),
br(),
actionButton("runButton", strong("Run!"))
),
mainPanel(
tabsetPanel(id = "allResults",
tabPanel(value = "inputVars",'Variable Selection', textOutput('inputVars')),
tabPanel(value = "structure",'Structure Result', textOutput('structure')))
)
)
server <- function(input, output, session) {
#RUN button
observeEvent(input$runButton, {
updateTabsetPanel(session, "allResults", 'structure')
})
#VAR SELECTION
output$inputVars <- renderText({
if (input$runButton == 0)
return()
print("Vars Selected")
})
#STRUCTURE RESULT
output$structure <- renderText({
if (input$runButton == 0)
return()
print("Structure Results")
})
}
runApp(shinyApp(ui, server), launch.browser = TRUE)
require(闪亮)
ui请注意,如果您使用的是闪亮的模块,则必须参考正确的会话。例如,如果单个选项卡是模块,则该选项卡的会话将无法切换到其他选项卡
要解决这个问题,实际上可以将所有选项卡的“父级”(容器)会话传递到选项卡模块的构造函数中,然后使用它
一个例子的概要
shinyUI(function(request) {
source('page/search.R', local = T)
source('page/app.R', local = T)
fluidPage(
tabsetPanel(id = 'inTabset',
tabPanel(id = 'search', 'Search', searchUI('search'), value = 'search'),
tabPanel(id = 'app', 'App', appUI('app'), value = 'app')
)
)
})
shinyServer(function(input, output, session) {
source('page/search.R', local = T)
source('page/app.R', local = T)
searchSession = callModule(searchServer, 'search')
callModule(appServer, 'app', session, searchSession)
})
发光模块
appUI = function(id) {
ns = NS(id)
tagList(
actionButton(ns('sendToHeatmap'), 'Send ortholog groups to heatmap')
)
}
appServer = function(input, output, session, parentSession, searchSession) {
# listen to a button press and switch to tab
observeEvent(input$sendToSearch, {
updateTextInput(searchSession, 'searchBox', 'funsearchterm')
updateTabsetPanel(parentSession, 'inTabset', selected = 'search')
})
}
请注意,如果您使用的是闪亮的模块,则必须参考正确的会话。例如,如果单个选项卡是模块,则该选项卡的会话将无法切换到其他选项卡
要解决这个问题,实际上可以将所有选项卡的“父级”(容器)会话传递到选项卡模块的构造函数中,然后使用它
一个例子的概要
shinyUI(function(request) {
source('page/search.R', local = T)
source('page/app.R', local = T)
fluidPage(
tabsetPanel(id = 'inTabset',
tabPanel(id = 'search', 'Search', searchUI('search'), value = 'search'),
tabPanel(id = 'app', 'App', appUI('app'), value = 'app')
)
)
})
shinyServer(function(input, output, session) {
source('page/search.R', local = T)
source('page/app.R', local = T)
searchSession = callModule(searchServer, 'search')
callModule(appServer, 'app', session, searchSession)
})
发光模块
appUI = function(id) {
ns = NS(id)
tagList(
actionButton(ns('sendToHeatmap'), 'Send ortholog groups to heatmap')
)
}
appServer = function(input, output, session, parentSession, searchSession) {
# listen to a button press and switch to tab
observeEvent(input$sendToSearch, {
updateTextInput(searchSession, 'searchBox', 'funsearchterm')
updateTabsetPanel(parentSession, 'inTabset', selected = 'search')
})
}
您是否将会话
作为服务器
函数的参数之一?是的,我有会话。请参见上面的可复制代码。谢谢您是否将会话
作为服务器
函数的参数之一?是的,我有会话。请参见上面的可复制代码。谢谢是的,就是这样!非常感谢,猪排!是的,就是这样!非常感谢,猪排!是否有一种方法可以将变量传递给selected,而不是像selected='search'
这样的selected=val_sel
?当我使用时,它没有响应,怀疑我是否没有按预期传递它appServer=function(输入,输出,会话,parentSession,val_sel){observeEvent(输入$sendToSearch,{updateTabsetPanel(parentSession,'inTabset',selected=val_sel)}
我现在不再使用闪亮的应用程序,所以我不确定,但是我认为selected='search'只是一个默认值,然后您仍然可以切换。有没有一种方法可以将变量传递给selected而不是selected='search'
类似selected=val_sel
的东西?当我使用时,它没有响应,怀疑我是否没有按预期传递它appServer=function(输入,输出,会话,parentSession,val_sel){observeEvent(输入$sendToSearch,{updateTabsetPanel(parentSession,'inTabset',selected=val_sel)}
我现在不再使用闪亮的应用程序,所以我不确定,但我认为selected='search'只是一个默认值,然后您仍然可以切换。