gpt4 book ai didi

r - 确定是否在 Shiny 的应用程序中单击了 DT 数据表

转载 作者:行者123 更新时间:2023-12-04 11:23:47 24 4
gpt4 key购买 nike

这是我获得表格点击事件的最佳尝试的一个工作示例:

library(shiny)
library(DT)

runApp(shinyApp(
ui = fluidPage(DT::dataTableOutput('table')),
server = function(input, output, session) {
output$table <- DT::renderDataTable({
dt <- data.frame(a = 1)
datatable(dt, rownames = FALSE, selection = 'none')
})
observeEvent(input$table_cell_clicked, {
print(Sys.time())
})}
))

问题是 observeEvent仅当用户单击与之前单击的单元格不同的单元格时才会使用react。有没有办法在任何表格点击上获得事件?

最佳答案

我认为这可能会有所帮助

尝试添加 callbackShiny.onInputChange并添加一直改变的 smth ( rnd )

smt 喜欢

   JS("table.on('click.dt', 'td', function() {
var row_=table.cell(this).index().row;
var col=table.cell(this).index().column;
var rnd= Math.random();
var data = [row_, col, rnd];
Shiny.onInputChange('rows',data );
});")

然后像这样使用它:
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(DT::dataTableOutput('table')),
server = function(input, output, session) {
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(1,2),b=c(2,3)), rownames = FALSE, selection = 'none', callback = JS("table.on('click.dt', 'td', function() {
var row_=table.cell(this).index().row;
var col=table.cell(this).index().column;
var rnd= Math.random();
var data = [row_, col, rnd];
Shiny.onInputChange('rows',data );
});")
)}
)

observeEvent(input$rows, {
print(input$rows)
print(Sys.time())

})}
))

然后解析所有 rowcol来自 input$rows
附注。在数据表中索引从 0 开始。

关于r - 确定是否在 Shiny 的应用程序中单击了 DT 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com