如何在 Shiny 中创建一个弹出框来获取输入数据,然后将其传送到我的 Shiny 应用程序中?

How do I create a pop up box in Shiny to get input data, which then carries foward in my Shiny app?

我有一个应用程序,我想在弹出对话框中预先提出问题,回答问题,让对话框消失,然后让我的应用程序 运行。

我已经搜索了一个多星期,尝试了很多方法都无济于事。我只试过 readline()。我查看了 ShinyBS,但 none 个示例正在运行。我调查了 tcltk2。虽然我没有收到任何错误,但没有任何事情包括没有对话框。

这是我想做的一个简单例子。

假设我只想要一个弹出框来询问,你叫什么名字?

输入姓名后,框关闭,应用程序开始。也许应用程序现在说,你好名字。

请帮我更新下面的代码。

library(shiny)
library(tcltk2)
library(shinybs)

#Create pop up box asking name. Then substitute this value into XXX below.
ui <- shinyUI(fluidPage(

   # Application title
   titlePanel("Hello XXX, how are you?")


   )
)

server <- shinyServer(function(input, output) {


   })


# Run the application 
shinyApp(ui = ui, server = server)

为了完整性,这里是我写的代码。这是从引用的 link 猪排中收集到的。可以用,虽然有些部分我还是不明白。

library(shiny)

Logged = FALSE;

ui1 <- function(){
  tagList(
    div(id = "login",
        wellPanel(textInput("name", "Name"),
                  br(),actionButton("submit", "Submit"))),
    tags$style(type="text/css", "#login {font-size:10px;   text-align: left;position:absolute;top: 40%;left: 50%;margin-top: -100px;margin-left: -150px;}")
  )}

ui2 <- function(){fluidPage(

  # Application title
  titlePanel({
    fluidRow(column(12,
            textOutput("greeting")))


            })

)}


ui = (htmlOutput("page"))
server = (function(input, output,session) {

  USER <- reactiveValues(Logged = Logged)

  observe({ 
    if (USER$Logged == FALSE) {
      if (!is.null(input$submit)) {
        if (input$submit > 0) {
          Username <- isolate(input$name)
          if (length(Username) > 0 ) {

            USER$Logged <- TRUE

          }
        } 
      }
    }    
  })
  observe({
    if (USER$Logged == FALSE) {

      output$page <- renderUI({
        div(class="outer",do.call(bootstrapPage,c("",ui1())))
      })
    }
    if (USER$Logged == TRUE) 
    {
      output$page <- renderUI({
        div(class="outer",do.call(fluidPage,ui2()))
      })
      print(ui)
    }
  })

  output$greeting <- renderText({
    print(paste("Hello, how are you", " ", input$name,"?", sep = ""))
    })

})

runApp(list(ui = ui, server = server))