我有一个简单的采样代码,我想在下表中打印过去的结果(在当前会话中)。但是,我很难搞清楚。有什么想法吗?
library(shiny)
ui <- shinyUI(pageWithSidebar(
headerPanel("Randomization"),
sidebarPanel(p("Click the button to randomize a class"),
br(),
actionButton("randomize", "Randomize")
),
mainPanel(
verbatimTextOutput("vText")
)
))
server <- shinyServer(function(input, output) {
video <- c("v1", "v2", "v3")
output$vText <- renderText({
if (input$randomize == 0) {
return()
} else {
paste(input$randomize, ".", replicate(1, sample(video, 1, replace = TRUE)))
}
})
})
shinyApp(ui = ui, server = server)
例如(使用上面的代码),如果我按下actionButton 3次,那么在主文本框下方会说“3. v1”,而在下面它会有过去的采样(例如“1. v1, 2. v3“)
答案 0 :(得分:1)
您可以将当前文本存储在会话变量中。请注意<<-
仅允许永远不会使用幸运cookie的人使用幸运cookie,但此处会保护其免受会话中txt <- ""
的误用。
最棘手的部分是回车;也许有人找到一种更优雅的方法来避免双paste
。
server <- shinyServer(function(input, output) {
video <- c("v1", "v2", "v3")
txt <- ""
output$vText <- renderText({
if (input$randomize == 0) {
return()
} else {
txt <<- paste0(paste(txt,
input$randomize, ".", replicate(1, sample(video, 1, replace = TRUE))),sep = "\n")
txt
}
})
})