在闪亮的

时间:2016-07-29 22:31:30

标签: r user-interface shiny

我希望用户在文本框中输入一个闪亮的值,然后点击一个按钮来查看之前键入的值。我让这个使用下面的代码,但它远非理想。首先,它需要我两次点击“返回”按钮才能工作(不知道为什么)。任何建议表示赞赏。 (另请注意,我在输出中包含了迭代表仅供参考)。

library(shiny)

q <- new.env() # create new environment
assign("iteration",1,envir = q)
log <- data.frame(iteration=NULL,id=NULL)
assign("log",log,envir = q)

ui <- fluidPage(
    actionButton("back", "go back"),
    textInput("id","enter id",value=1),
    tableOutput("x")
)


server <- function(input, output,clientData, session) {
  observeEvent(input$id,{
    id <- input$id
    iteration <- get("iteration", envir = q) # get iteration
    log <- get("log",envir = q) #'gets df'
    temp <- data.frame(iteration=iteration,id=id,stringsAsFactors = F)
    if (!nrow(log))  log <- rbind(log,temp) # for first iteration only
    else log[iteration,] <- temp
    assign("log",log,envir = q)
    iteration <- iteration+1
    assign("iteration",iteration,envir = q)
  })

  # back button

  observeEvent(input$back,{
    iteration <- get("iteration", envir = q) # get iteration
    iteration <- iteration-1
    assign("iteration",iteration,envir = q)
    log <- get("log",envir = q) #'gets df'
    #get data
    id <- log$id[iteration]
    updateTextInput(session,"id", value=id)
  })

  # for visualising table

  x <- eventReactive(input$id,{
    get("log",envir = q)
  })

  output$x <- renderTable({x()})
}

shinyApp(ui = ui, server = server)

我想要一个“返回”按钮,而不是单击显示之前在文本框中输入的值。

(A similar question存在,但我相信我的不同。)

0 个答案:

没有答案