3
Dataの行を選択するためにradiButtonを追加する必要があります。つまり、選択されたラジオボタンを入力に渡す必要があります。 DTで組み込みの行選択を使用することはできません。私は実際に行を選択するためにラジオボタンを使用する必要があります。 これは欲しいものです:RadioButtonを追加してShinyのDataTable行を選択
使用するhttps://yihui.shinyapps.io/DT-radio/私はCOLUMNSを選択することができます。 エス:
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
title = 'Radio buttons in a table',
DT::dataTableOutput('foo'),
verbatimTextOutput("test")
),
server = function(input, output, session) {
m = matrix(
c(round(rnorm(24),1), rep(3,12)), nrow = 12, ncol = 3, byrow = F,
dimnames = list(month.abb, LETTERS[1:3])
)
for (i in seq_len(nrow(m))) {
m[i, 3] = sprintf(
if_else(i == 1,
'<input type="radio" name="%s" value="%s" checked="checked"/>',
'<input type="radio" name="%s" value="%s"/>'),
"C", month.abb[i]
)
}
m=t(m)
output$foo = DT::renderDataTable(
m, escape = FALSE, selection = 'none', server = FALSE,
options = list(dom = 't', paging = FALSE, ordering = FALSE),
callback = JS("table.rows().every(function() {
var $this = $(this.node());
$this.attr('id', this.data()[0]);
$this.addClass('shiny-input-radiogroup');
});
Shiny.unbindAll(table.table().node());
Shiny.bindAll(table.table().node());")
)
output$test <- renderPrint(str(input$C))
}
)
単純に、Iは、m = tの(M)を除去しようとしたコールバックの列に行を変更します。これは、この例のコールバック関数がclassにidを追加し、最後の列にidを追加しているために機能しません。
ナイス! 私はあなたの答えを受け入れるでしょう。 最初のラジオボタンがデフォルトでチェックされていても、入力$ Cの値はNULLになりますので、入力$ Cは "Jan"にする必要があります。 。 – gico
いいえ、 'ifelse'を' 'で置き換えることができます。 – NicE