我想用 2 actionButton
s 制作一个应用程序:1)在加载之前提交更改 aselectizeInput
和 2)绘制绘图。
我知道如何spinner
在单击 a 后添加 aactionButton
但是大多数情况是在您想要显示绘图时添加的。但是,是否可以在spinner
不显示任何情节的情况下添加 a?在这种特殊情况下,我想在单击“提交”后显示一个微调器,直到selectizeInput
从“选择选项卡”加载。您可以看到我附加的示例,加载所有选项需要一些时间(因为文件有 25000 行)。
actionButton
单击第二个(显示绘图)后,我已经有了一个微调器,但我还需要一个。
我创建了一个示例,但由于某种原因,该图未显示在闪亮的应用程序中,它出现在 R 的窗口中(我不知道为什么,但我添加了该图只是为了向您展示我如何放置第二个微调器。我想要一个类似的,但第一个actionButton
。)。
library(shiny)
library(shinycssloaders)
ui <- fluidPage(
titlePanel("My app"),
sidebarLayout(
sidebarPanel(
tabsetPanel(
tabPanel("Submit",
checkboxInput("log2", "Log2 transformation", value = FALSE),
actionButton("submit", "Submit")
),
tabPanel("Selection",
br(),
selectizeInput(inputId = "numbers", label = "Choose one number:", choices=character(0)),
actionButton("show_plot", "Show the plot")
))
),
mainPanel(
conditionalPanel(
condition = "input.show_plot > 0",
style = "display: none;",
withSpinner( plotOutput("hist"),
type = 5, color = "#0dc5c1", size = 1))
)
)
)
server <- function(input, output, session) {
data <- reactive({
data = read.csv("https://people.sc.fsu.edu/~jburkardt/data/csv/hw_25000.csv")
data[,1] <- as.character(data[,1])
if(input$log2 == TRUE){
cols <- sapply(data, is.numeric)
data[cols] <- lapply(data[cols], function(x) log2(x+1))
}
return(data)
})
mylist <- reactive({
req(data())
data <- data()
data <- data[,1]
return(data)
})
# This is to generate the choices (gene list) depending on the user's input.
observeEvent(input$submit, {
updateSelectizeInput(
session = session,
inputId = "numbers",
choices = mylist(), options=list(maxOptions = length(mylist()))
)
})
v <- reactiveValues()
observeEvent(input$show_plot, {
data <- data()
v$plot <- plot(x=data[,1], y=data[,2])
})
# If the user didn't choose to see the plot, it won't appear.
output$hist <- renderPlot({
req(data())
if (is.null(v$plot)) return()
if(input$show_plot > 0){
v$plot
}
})
}
有谁知道如何帮助我,好吗?
非常感谢