我正在开发一个接受DNA序列的闪亮应用程序(例如" ACTGACTG"),进行一些计算并在点击按钮时绘制结果。当我在Biostrings::DNAString
对象中存储reactiveValues
时,如果序列的字符数发生变化,我的闪亮应用程序仅对更改做出反应,例如:如果" AA"首先输入,如果" CC"则情节不会改变。然后输入,但如果" AAAA"进入。如果我将对象存储为字符,它会响应所有更改。这是一个简单的例子:
library(shiny)
library(shinyBS)
library(Biostrings)
library(ggplot2)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
ref_seqs <- textInput("ref_seqs", "Sequence", width = "100%",
value = NULL, placeholder = "ATGCTGCTGGTTATTAGATTAGT"),
run_guide <- bsButton("run", 'Run', type = "action",
style = "success", block = TRUE)
),
mainPanel(
plotOutput("reference")
)
)
)
server <- function(input, output) {
ref <- reactiveValues(sq = NULL)
dat <- reactive({
req(input$run)
chrs <- strsplit(as.character(ref$sq),"")[[1]]
data.frame(label = chrs, x = seq_along(chrs))
})
observeEvent(input$run, {
ref$sq <- Biostrings::DNAString(input$ref_seqs)
#ref$sq <- input$ref_seqs
})
output$reference <- renderPlot({
ggplot(dat(), aes(x = x, y = factor(1), label = label)) + geom_text(size = 12)
})
}
shinyApp(ui = ui, server = server)
如果我注释掉ref$sq <- Biostrings::DNAString(input$ref_seqs)
行并取消注释下面的一行,则情节会根据更改进行更新。
任何人都能解释为什么会这样吗? reactiveValues
仅适用于基类型吗?谢谢!