Вот псевдокод для генерации графика на основе выбора, сделанного с помощью radioButton
и actionButton
.
ui <- fluidPage(
mainPanel(
tabsetPanel(
tabPanel("Plots",
fluidRow(column(4,wellPanel(
actionButton("action_plot","Generate Plots"),
h6(textOutput("numheat")),
radioButtons("plot_subset",label="Chose by sample or group?",
choices=c("Sample","Group"),selected="Sample"),
conditionalPanel("input.plot_subset=='Sample'",
selectizeInput("view_sample_plot",
label = h5("Select Samples"),
choices = NULL,
multiple = TRUE,
options = list(placeholder = 'select samples to plot')
)
),
conditionalPanel("input.plot_subset=='Group'",
checkboxGroupInput("view_group_plot",
label=h5("Select Groups to View"),
choices="",
selected="")
)
)),
column(8,
tabsetPanel(
tabPanel(title="Plot",
#textOutput("which_genes"),
h4(textOutput("plot_title")),
plotOutput("plot_rna",height="800px")
)
)
)
)
)
)
)
)
server <- function(input, output, session) {
if(input$plot_subset=='Sample'){
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot1()
function1_plot(data_plot1())
})
})
} else if(input$plot_subset=='group'){
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot2()
function2_plot(data_plot2())
})
}
}
}
Я пытаюсь сгенерировать график, выполнив Функция speci c, когда срабатывает radioButton
value = 'sample' и actionButton
. Аналогичным образом выполните другую указанную c функцию, когда radioButton
value = 'group' и actionButton
запущены. Я попытался использовать if
и observeEvent
, как показано выше. Тем не менее, это не работает, как ожидалось. Это дает следующую ошибку:
Ошибка в .getReactiveEnvironment () $ currentContext: Операция не разрешена без активного реактивного контекста. (Вы пытались сделать что-то, что можно сделать только из реактивного выражения или наблюдателя.)
Как я могу сгенерировать график на основе значений radiobutton
и actionButton
? Спасибо,
Версия 2: Согласно предложению, я поместил if в среду observer
, как показано ниже:
server <- function(input, output, session) {
observe({(input$plot_subset=='Sample'})
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot1()
function1_plot(data_plot1())
})
})
observe({input$plot_subset=='Group'})
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot2()
function2_plot(data_plot2())
})
})
}
Это только производит график со второго observe
, где input$plot_subset=='Group'
, но не с первого, когда input$plot_subset=='Sample'
Версия 3: также имеет ту же проблему, что и версия 2 .
server <- function(input, output, session) {
observe({if(input$plot_subset=='Sample'){
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot1()
function1_plot(data_plot1())
})
})
} else if(input$plot_subset=='Group'){
observeEvent(input$action_plot ,{
output$plot_rna <- renderPlot({
data_plot2()
function2_plot(data_plot2())
})
})
}
}
}