0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

R(shiny)でplot_lyのevent_data("plotly_click", source = "A")で取得したクリックイベントを削除する方法

Posted at
  • 参考記事はこちら
  • 上記リンクは英語なので日本語で説明します。下記のようにshinyのserver.Rにevent_data("plotly_click", source = "A")でクリックイベントを取得してshinyアプリの画面にevent_data("plotly_click", source = "A")の内容を表示させるコードがあるとします。
  output$plotVal <- renderPrint({
    e <- event_data("plotly_click", source = "A")
  })

この場合、event_data("plotly_click", source = "A")にNULLを代入したい場合に
event_data("plotly_click", source = "A") = NULL
としてもデータの型が合わなかったりshinyのsessionの情報がevent_data()に含まれている為、代入できません。
そこでNULLを代入するためには下記のように上記コードを書き換える方法があります。

  data <- reactiveValues(e=NULL)

  observe({
    data$e <- event_data("plotly_click", source = "A")
  })

  output$plotVal <- renderPrint({
    e <- data$e
    if (is.null(e)) {
      NULL
    } else {
      e
    }
  })

  observeEvent(input[["clearEvent"]], {
    data$e <- NULL
  })

この場合、書き換える前と同様に画面にはevent_data("plotly_click", source = "A")の内容が表示されるはずです。event_data("plotly_click", source = "A")の中身をNULLにする場合は、input[["clearEvent"]]の値を画面上で変更することで、data$eにNULLが入り、output$plotVal関数内のdata$eもNULLとなり、event_data("plotly_click", source = "A")に直接NULLを代入したわけではないですが結果的にevent_data("plotly_click", source = "A")にNULLを代入したことになります。
input[["clearEvent"]]は例えば、shinyアプリの画面上で任意のボタンを押したり、任意のセレクトボックスの値を変更することで動きます。あなたがevent_data("plotly_click", source = "A")の中身をNULLにしたいタイミングをinput[["clearEvent"]]に当てはめるとよいと思います。
以上、ご参考まで

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?