根据可编辑单元格用户输入更新闪亮的 DT
Posted
技术标签:
【中文标题】根据可编辑单元格用户输入更新闪亮的 DT【英文标题】:Update shiny DT based on editable cells user input 【发布时间】:2020-12-29 05:39:59 【问题描述】:一个闪亮的应用小例子:
library(shiny)
library(tidyverse)
library(DT)
ui <- fluidPage(
# Application title
titlePanel("blah"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
DT::DTOutput('ex_table')
)
)
)
server <- function(input, output)
output$ex_table <- DT::renderDataTable(mtcars %>% select(cyl) %>% mutate(blah = cyl + 2),
selection = 'none', editable = TRUE)
# Run the application
shinyApp(ui = ui, server = server)
如果你运行它,它看起来像:
由于我在renderDataTable()
中添加了editable = TRUE
,因此您可以编辑单元格。
提供数据表的表有以下行:
mtcars %>% select(cyl) %>% mutate(blah = cyl + 2)
所以特征 'blah' 应该始终是 cyl + 2 中的任何内容。在屏幕截图中,我添加了 10,000,因此所需的输出将是数据表在按 Enter 后更新以显示 10,002。
这可能吗?我该怎么做?
【问题讨论】:
【参考方案1】:您可以关注这些examples。 试试看:
library(shiny)
library(tidyverse)
library(DT)
ui <- fluidPage(
# Application title
titlePanel("blah"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
DT::DTOutput('modtable'),
)
)
)
server <- function(input, output,session)
data <- mtcars %>% select(cyl) %>% mutate(blah = cyl + 2)
output$modtable <- DT::renderDT(data, selection = 'none', editable = TRUE)
proxy = dataTableProxy('modtable')
observeEvent(input$modtable_cell_edit,
info = input$modtable_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
data <<- editData(data, info)
if(j==1)data[i,j+1]<<-as.numeric(data[i,j])+2
replaceData(proxy, data, resetPaging = FALSE)
)
# Run the application
shinyApp(ui = ui, server = server)
【讨论】:
以上是关于根据可编辑单元格用户输入更新闪亮的 DT的主要内容,如果未能解决你的问题,请参考以下文章
使用带闪亮的 Flexdashboard 时如何拥有可编辑的 DT 表?