在我的Shiny App中,我尝试使用DT
包从表 A 中获取输入,并使用它来过滤表 B 中的数据。但是,仅表 A 中来自第0列的数据可用作过滤器值。因此,如果单击第1列,则表 B 中的输出将为空。
然后我的问题是,是否可以强制后缀cell_clicked
始终从被单击的行返回列0的值?本质上,我想返回input$tabelA_cell-clicked$value
,其中列号等于0,行号等于input$tabelA_cell_clicked$row
我已尝试在服务器脚本中进行以下操作(简化示例):
output$tabelA <- renderDataTable({datatable(Data_tabel_A)})
output$TabelB <- renderDataTable({datatable(Data_tabel_B %>%
filter(variable1 == input$tabelA[input$tabelA_cell_clicked$row,0]))
})
但是,input$tabelA[input$tabelA_cell_clicked$row,0]
似乎没有返回值。有人能指出我正确的方向吗?
答案 0 :(得分:0)
在我的评论之后,由于您未提供可复制的代码,因此以下是使用iris
数据集的简单演示-
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
splitLayout(
DTOutput("table_A"),
DTOutput("table_B")
)
),
server = function(input, output, session) {
# can be reactive
table_A_data <- data.frame(Species = unique(iris$Species),
SomeColumn1 = letters[1:3],
SomeColumn2 = 1:3)
output$table_A <- renderDT({
datatable(table_A_data, selection = 'single')
})
output$table_B <- renderDT({
req(input$table_A_rows_selected)
# since I want to use only species value for filtering
filter_val <- table_A_data$Species[input$table_A_rows_selected]
iris %>%
filter(Species == filter_val) %>%
datatable()
})
}
)