我有一个角色向量corpus
。当我点击Next
按钮时,我试图逐个显示向量的每个成员。 如何使用current
按钮增加Next
变量?
到目前为止,我有以下代码:
#ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Display character vector one by one"),
sidebarLayout(sidebarPanel(actionButton("Next", "Next Sentence")),
mainPanel( htmlOutput("content"))
)))
#server.R
shinyServer(function(input, output) {
corpus <- c("Sample sentence one", "Second sentence", "Third sentence")
current <- 1
observeEvent(input$Next,{
if(current <= length(corpus))
output$content <- renderText(corpus[current])
})
})
还请建议是否有更好的方法来实现此功能
答案 0 :(得分:2)
在server.R
中,您将变量current
设为本地变量,因此每次点击按钮 下一句 时,它都会保持不变{ {1}}因此,它将始终呈现列表中的第一个元素,即1
。
创建全局变量,每次单击按钮后增加Sample sentence one
。在 RShiny 中,使用1
修改全局变量而不是<<-
。另请查看Scoping rules for Shiny apps。
<-
答案 1 :(得分:1)
您也可以尝试这一点,将当前索引存储为反应值并循环显示句子,使用模运算:
#ui.R
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Display character vector one by one"),
sidebarLayout(sidebarPanel(actionButton("Next", "Next Sentence")),
mainPanel( htmlOutput("content"))
)))
#server.R
server <- shinyServer(function(input, output) {
values <- reactiveValues()
values$current <- 0
corpus <- c("Sample sentence one", "Second sentence", "Third sentence")
observeEvent(input$Next,{
output$content <- renderText(corpus[values$current])
values$current <- values$current %% length(corpus) + 1
})
})
shinyApp(ui = ui, server = server)