2017-10-20 6 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) 

私はボタンをklickとき

は、[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)) 
    } 
) 
関連する問題