4
データテーブルを持つR Shiny Appがあります。 1つの列には、固有のIDを持つアクションボタンが含まれています。これらのボタンのクリックを処理したいのですが、残念ながらイベント処理コード(単純なprint文)は決して実行されません。私が使用している R Shiny:データテーブル内の操作ボタンを処理します。
- 私が使用しているパス(
input$employees$x$data$actions[[id]]
):私は2つの可能性のある問題を参照してください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)
:この自己完結型の例(
app.R
)を参照してください。 でも、は実際に処理できるものを指していません。つまり、HTML文字列であり、ボタンオブジェクトではありません。
また、データテーブルの中にボタンを入れるのに適していますか?
はい、あります。私はまだコードを完全に理解する必要がありますが、意図したとおりに動作します。ありがとうございました! –
説明が不十分で申し訳ありません。サーバーコードで最初に作成される機能は、&名前の入力を作成する機能です。次に、この関数を使用して、反応的なデータフレームに列を作成します。そのデータフレームはDT出力に配置され、UIに表示されます。イベントハンドラ関数(observeEvent)は、select_button(私たちが作成した5)がヒットしたときにいつでも反応します。この場合、リアクティブ値(myValue $ employee)が従業員の行ID名に一致するように変更されます。その値はmyText出力に渡され、UIでレンダリングされます。希望は意味をなさない! – kostr
同じボタンを2回クリックしても、実際には起動しません。そのための修正? –