2017-10-20 130 views
0

我想定義一個函數,將反應輸入作爲參數調用閃亮函數。在這個例子中:如何定義調用閃亮函數的函數?

library(shiny) 

ui <- fluidPage(
    actionButton("do", "Click Me") 
) 

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

    clickFunction<-function(x){ 
     observeEvent(x, {print("got it")}) 
    } 

    clickFunction(x = input$do) 
} 

shinyApp(ui, server) 

我希望

[1] 「知道了」

當我克利克按鈕 「點擊我」,而是沒有輸出。

如何才能讓observeEvent觀察反應輸入?

我認爲這可能取決於observeEvent的環境參數,但我沒有經驗使用它們。

謝謝你和安德烈。

+0

通常'observeEvent()的範圍'從內部'server'調用。你的例子不起作用,因爲'clickFunction()'沒有被調用(它不在被動環境中)。調用'observeEvent()'的通常方法是'server < - function(input,output,session){observeEvent(input $ do,{print(「got it」)})}'' –

回答

0

您需要通過input$do與反應包裝。你的例子被編碼的方式,input$do將被調用一次函數被調用。

library(shiny) 

clickFunction <- function(x){ 
    observeEvent(x(), {print("got it")}) 
} 

shinyApp(
    fluidPage(actionButton("do", "Click Me")), 
    function(input, output, session){  
    clickFunction(reactive({input$do})) 
    } 
) 

Annother方法是引用您的活動表現,但隨後input必須處於clickFunction

library(shiny) 

shinyApp(
    fluidPage(actionButton("do", "Click Me")), 
    function(input, output, session){ 
    clickFunction <- function(x){ 
     observeEvent(x, {print("got it")}, event.quoted = TRUE) 
    } 

    clickFunction(x = quote(input$do)) 
    } 
)