2016-07-25 80 views
0

我有一個應用程序,我想問一個問題在前面說一個彈出對話框,有問題的答案,讓框消失,然後讓我的應用程序運行。如何在Shiny中創建一個彈出框來獲取輸入數據,然後在我的Shiny應用程序中輸入foward?

我已經搜索了一個多星期,並嘗試了很多事情無濟於事。我已經嘗試過readline()。我看過ShinyBS,但沒有一個例子正在運行。我已經看過tcltk2。雖然我沒有得到任何錯誤,但沒有任何事情發生,不包括任何對話框。

這是我想要做的一個簡單例子。

假設我只想要一個彈出框問,你叫什麼名字?

名稱輸入後,該框關閉,應用程序開始。也許應用程序現在說,Hello Name。

請幫我更新下面的代碼。

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) 
+0

你是什麼意思都沒有運作? – shayaa

+0

我相信你可以重寫這個 http://stackoverflow.com/questions/28987622/starting-shiny-app-after-password-input/28997605#28997605 –

+0

豬排,這確實有幫助。它仍然佔據了我一天中較好的一部分,但我知道了。現在解決下一個問題。謝謝!! Shayaa,ShinyBS中每個例子的每一個鏈接都是死的(404錯誤)。鏈接不起作用,我看不到任何示例。 –

回答

0

爲了完整,這裏是我寫的代碼。這是從鏈接豬排引用收集。它的工作原理雖然有些部分我仍然不明白。

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)) 
相關問題