Rシャイニー:データテーブルのアクションボタンを処理する

パトリック・ブッチャー

データテーブル付きのRシャイニーアプリがあります。1つの列には、一意のIDを持つアクションボタンが含まれています。これらのボタンのクリックを処理したいのですが、残念ながら、イベント処理コード(単純なprintステートメント)は実行されません。この自己完結型の例を参照してください(app.R):

library(shiny)
library(DT)

ui <- shinyUI(
    fluidPage(
        title = "DataTable with Buttons",
        fluidRow(
            column(
                width = 8,
                dataTableOutput("employees")
            )
        )
    )
)

server <- shinyServer(function(input, output) {
    df <- data.frame(
        name = c('Dilbert', 'Alice', 'Wally', 'Ashok', 'Dogbert'),
        motivation = c(62, 73, 3, 99, 52),
        stringsAsFactors = FALSE
    )
    fireButtons <- list()
    fireButtonIds <- list()
    for (r in rownames(df)) {
        id <- paste("fire_", r, sep = "")
        fireButtonIds[[r]] <- id
        button <- actionButton(id, label = "Fire")
        fireButtons[[r]] <- as.character(button)
    }
    df$actions <- fireButtons
    dt <- datatable(df, colnames = c("#", "Name", "Motivation", "Actions"))
    output$employees <- renderDataTable(dt)


    for (id in fireButtonIds) {
        # binding doesn't work
        # - is the path wrong?
        # - is it because the button is really a string, not an object?
        observeEvent(input$employees$x$data$actions[[id]], {
            print(paste("click on", i))
        })
    }
})

shinyApp(ui = ui, server = server)

2つの問題が考えられます。

  1. 私が使用しているパス(input$employees$x$data$actions[[id]])は間違っています
  2. 私が使用しているパスが正しいこと、しかしそれだけでHTML文字列ではなく、ボタンオブジェクトのそれは実際に扱うことができるようなものを指していない、すなわち。

または、データテーブル内にボタンを配置するためのはるかに優れたアプローチがあるかもしれません...?

Kostr

これはあなたがやろうとしていることを達成しますか?

library(shiny)
library(DT)

shinyApp(
  ui <- fluidPage(
    DT::dataTableOutput("data"),
    textOutput('myText')
  ),

  server <- function(input, output) {

    myValue <- reactiveValues(employee = '')

    shinyInput <- function(FUN, len, id, ...) {
      inputs <- character(len)
      for (i in seq_len(len)) {
        inputs[i] <- as.character(FUN(paste0(id, i), ...))
      }
      inputs
    }

    df <- reactiveValues(data = data.frame(

      Name = c('Dilbert', 'Alice', 'Wally', 'Ashok', 'Dogbert'),
      Motivation = c(62, 73, 3, 99, 52),
      Actions = shinyInput(actionButton, 5, 'button_', label = "Fire", onclick = 'Shiny.onInputChange(\"select_button\",  this.id)' ),
      stringsAsFactors = FALSE,
      row.names = 1:5
    ))


    output$data <- DT::renderDataTable(
      df$data, server = FALSE, escape = FALSE, selection = 'none'
    )

    observeEvent(input$select_button, {
      selectedRow <- as.numeric(strsplit(input$select_button, "_")[[1]][2])
      myValue$employee <<- paste('click on ',df$data[selectedRow,1])
    })


    output$myText <- renderText({

      myValue$employee

    })

  }
)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Rシャイニーのアクションボタンとのデータテーブルの競合にフォーマットを追加する

分類Dev

Rシャイニーのアクションボタンとのデータテーブルの競合にフォーマットを追加する

分類Dev

Rシャイニー-アクションボタンを押した後、関数の値をデータテーブルに保存します

分類Dev

Rシャイニー:データテーブルの行ボタンを削除

分類Dev

Rシャイニーリアクティブ値でアクションボタンを2回アクティブにする

分類Dev

PythonでSlackボタンアクションのPOSTリクエストデータを処理する

分類Dev

スピードダイヤルフローティングアクションボタンでメニュー項目の選択を処理

分類Dev

シャイニーのアクションボタンをクリックした後にのみサーバー上のコンテンツを更新する

分類Dev

IQKeyboardManagerを処理する方法ツールバーの[完了]ボタンアクション?

分類Dev

シャイニーobserveEvent内の複数のアクションボタンをリッスンしてシャイニーをリロードする方法

分類Dev

Rシャイニー:サーバー側のアクションボタンのオンクリックオプションを使用します

分類Dev

tvOSリモートでメニューボタンアクションを処理する方法

分類Dev

反応ナビゲーションタブバーアイテムクリックを処理する方法は?

分類Dev

Rシャイニーのアクションボタンを使用してバリューボックスを更新する

分類Dev

r光沢のあるアクションボタンとデータテーブル出力

分類Dev

シャイニーのデータテーブルのアイコン

分類Dev

Rシャイニーのデータテーブルから最初の列(インデックス)を削除する方法

分類Dev

ライブデータをシーケンシャルプロミスとして処理する方法

分類Dev

クライアント側の処理でデータテーブルを遅延ロードする方法は?

分類Dev

クリック後にアクションボタンの焦点を外す(シャイニー)

分類Dev

Rシャイニー-ラジオボタンのラベルを取得する

分類Dev

ブラウザのアクションコンテキストメニューのデフォルトのタイトルエントリを削除する

分類Dev

.netアプリケーションでモバイル戻るボタンを処理する方法

分類Dev

Rシャイニーのアクションボタンを使用して、あるDTから他のDTに行を移動します

分類Dev

アクションボタンでテーブルを更新する

分類Dev

Rシャイニーアプリでブラウザの戻るボタンを無効にする

分類Dev

シャイニーR:データテーブルからチェックボックス入力のリストを保存する方法は?

分類Dev

elmアーキテクチャで複数のサブスクリプションを処理する方法

分類Dev

Androidのフローティングアクションボタンのメニューボタンにアクションを追加する方法

Related 関連記事

  1. 1

    Rシャイニーのアクションボタンとのデータテーブルの競合にフォーマットを追加する

  2. 2

    Rシャイニーのアクションボタンとのデータテーブルの競合にフォーマットを追加する

  3. 3

    Rシャイニー-アクションボタンを押した後、関数の値をデータテーブルに保存します

  4. 4

    Rシャイニー:データテーブルの行ボタンを削除

  5. 5

    Rシャイニーリアクティブ値でアクションボタンを2回アクティブにする

  6. 6

    PythonでSlackボタンアクションのPOSTリクエストデータを処理する

  7. 7

    スピードダイヤルフローティングアクションボタンでメニュー項目の選択を処理

  8. 8

    シャイニーのアクションボタンをクリックした後にのみサーバー上のコンテンツを更新する

  9. 9

    IQKeyboardManagerを処理する方法ツールバーの[完了]ボタンアクション?

  10. 10

    シャイニーobserveEvent内の複数のアクションボタンをリッスンしてシャイニーをリロードする方法

  11. 11

    Rシャイニー:サーバー側のアクションボタンのオンクリックオプションを使用します

  12. 12

    tvOSリモートでメニューボタンアクションを処理する方法

  13. 13

    反応ナビゲーションタブバーアイテムクリックを処理する方法は?

  14. 14

    Rシャイニーのアクションボタンを使用してバリューボックスを更新する

  15. 15

    r光沢のあるアクションボタンとデータテーブル出力

  16. 16

    シャイニーのデータテーブルのアイコン

  17. 17

    Rシャイニーのデータテーブルから最初の列(インデックス)を削除する方法

  18. 18

    ライブデータをシーケンシャルプロミスとして処理する方法

  19. 19

    クライアント側の処理でデータテーブルを遅延ロードする方法は?

  20. 20

    クリック後にアクションボタンの焦点を外す(シャイニー)

  21. 21

    Rシャイニー-ラジオボタンのラベルを取得する

  22. 22

    ブラウザのアクションコンテキストメニューのデフォルトのタイトルエントリを削除する

  23. 23

    .netアプリケーションでモバイル戻るボタンを処理する方法

  24. 24

    Rシャイニーのアクションボタンを使用して、あるDTから他のDTに行を移動します

  25. 25

    アクションボタンでテーブルを更新する

  26. 26

    Rシャイニーアプリでブラウザの戻るボタンを無効にする

  27. 27

    シャイニーR:データテーブルからチェックボックス入力のリストを保存する方法は?

  28. 28

    elmアーキテクチャで複数のサブスクリプションを処理する方法

  29. 29

    Androidのフローティングアクションボタンのメニューボタンにアクションを追加する方法

ホットタグ

アーカイブ