根据数据框中的多个数据 table 单元格选择存储值
Store values based on multiple data table cell selection in a data frame
我有一个闪亮的应用程序,其中包含两个数据 tables。第一个允许多个单元格选择,而第二个允许单个单元格选择。每个单元格值都应存储在 list_all()
中,然后显示为新的 table。问题是从第一个 table 开始,只存储最后一个单元格选择,而不是每个选择。
library(shiny)
library(DT)
data("mtcars")
ui <- shinyUI(
fluidRow(
DT::dataTableOutput("myDatatable"),
DT::dataTableOutput("myDatatable2"),
DT::dataTableOutput("myDatatable3")
)
)
server <- shinyServer(function(input, output, session) {
output$myDatatable <- DT::renderDataTable(matrix(iris[,5]),
selection=list( target="cell"),
server = FALSE,
rownames=FALSE)
output$myDatatable2 <- DT::renderDataTable(matrix(iris[c(25,78,67,45,90,66,78,9,8),5]),
selection=list(mode="single", target="cell"),
server = FALSE,
rownames=FALSE)
list_all <- reactive({
x <- c(input$myDatatable_cell_clicked$value, input$myDatatable2_cell_clicked$value)
})
output$myDatatable3 <- DT::renderDataTable(matrix(list_all())
)
})
shinyApp(ui, server)
是这样的吗?
library(shiny)
library(DT)
data("mtcars")
ui <- shinyUI(
fluidRow(
DTOutput("myDatatable"),
DTOutput("myDatatable2"),
DTOutput("myDatatable3")
)
)
server <- function(input, output, session) {
output$myDatatable <- renderDT(matrix(iris[,5]),
selection=list( target="cell"),
server = FALSE,
rownames=FALSE)
output$myDatatable2 <- renderDT(matrix(iris[c(25,78,67,45,90,66,78,9,8),5]),
selection=list(mode="single", target="cell"),
server = FALSE,
rownames=FALSE)
list_all <- reactiveVal(character())
observeEvent(input$myDatatable_cell_clicked, {
list_all(append(list_all(), input$myDatatable_cell_clicked$value))
})
observeEvent(input$myDatatable2_cell_clicked, {
list_all(append(list_all(), input$myDatatable2_cell_clicked$value))
})
output$myDatatable3 <- renderDT(matrix(list_all()))
}
shinyApp(ui, server)
我有一个闪亮的应用程序,其中包含两个数据 tables。第一个允许多个单元格选择,而第二个允许单个单元格选择。每个单元格值都应存储在 list_all()
中,然后显示为新的 table。问题是从第一个 table 开始,只存储最后一个单元格选择,而不是每个选择。
library(shiny)
library(DT)
data("mtcars")
ui <- shinyUI(
fluidRow(
DT::dataTableOutput("myDatatable"),
DT::dataTableOutput("myDatatable2"),
DT::dataTableOutput("myDatatable3")
)
)
server <- shinyServer(function(input, output, session) {
output$myDatatable <- DT::renderDataTable(matrix(iris[,5]),
selection=list( target="cell"),
server = FALSE,
rownames=FALSE)
output$myDatatable2 <- DT::renderDataTable(matrix(iris[c(25,78,67,45,90,66,78,9,8),5]),
selection=list(mode="single", target="cell"),
server = FALSE,
rownames=FALSE)
list_all <- reactive({
x <- c(input$myDatatable_cell_clicked$value, input$myDatatable2_cell_clicked$value)
})
output$myDatatable3 <- DT::renderDataTable(matrix(list_all())
)
})
shinyApp(ui, server)
是这样的吗?
library(shiny)
library(DT)
data("mtcars")
ui <- shinyUI(
fluidRow(
DTOutput("myDatatable"),
DTOutput("myDatatable2"),
DTOutput("myDatatable3")
)
)
server <- function(input, output, session) {
output$myDatatable <- renderDT(matrix(iris[,5]),
selection=list( target="cell"),
server = FALSE,
rownames=FALSE)
output$myDatatable2 <- renderDT(matrix(iris[c(25,78,67,45,90,66,78,9,8),5]),
selection=list(mode="single", target="cell"),
server = FALSE,
rownames=FALSE)
list_all <- reactiveVal(character())
observeEvent(input$myDatatable_cell_clicked, {
list_all(append(list_all(), input$myDatatable_cell_clicked$value))
})
observeEvent(input$myDatatable2_cell_clicked, {
list_all(append(list_all(), input$myDatatable2_cell_clicked$value))
})
output$myDatatable3 <- renderDT(matrix(list_all()))
}
shinyApp(ui, server)