R Datatable-编辑值、影响其他列并保留分页
我试图允许用户编辑DT值,并基于这些编辑,在其他列上运行计算。这在第一页上非常有效,但在后续页面上编辑值会将页面重置回第一页——从用户体验的角度来看,这是一场噩梦 示例应用程序演示问题。 尝试编辑第2页上的R Datatable-编辑值、影响其他列并保留分页,r,shiny,datatable,R,Shiny,Datatable,我试图允许用户编辑DT值,并基于这些编辑,在其他列上运行计算。这在第一页上非常有效,但在后续页面上编辑值会将页面重置回第一页——从用户体验的角度来看,这是一场噩梦 示例应用程序演示问题。 尝试编辑第2页上的vs值以查看发生了什么 library(shiny) library(DT) library(dplyr) shinyApp( ui = fluidPage( DTOutput('table') ), server = function(input, o
vs
值以查看发生了什么
library(shiny)
library(DT)
library(dplyr)
shinyApp(
ui = fluidPage(
DTOutput('table')
),
server = function(input, output, session) {
x = reactiveValues(df = mtcars %>% select(vs,am))
output$table = renderDT(x$df, editable = TRUE)
proxy = dataTableProxy('table')
observeEvent(input$table_cell_edit, {
info = input$table_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
x$df[i, j] <- isolate(DT::coerceValue(v, x$df[i, j]))
x$df[i,which(colnames(x$df)=='am')] <- x$df[[i, j]]*2
replaceData(proxy, x$df, resetPaging = FALSE) # important I have tried with and without this line no impact on page resetting
})
}
)
library(shiny)
library(DT)
library(dplyr)
shinyApp(
ui = fluidPage(
DTOutput('table')
),
server = function(input, output, session) {
df <- mtcars %>% select(vs,am)
output$table = renderDT(df, editable = TRUE)
proxy = dataTableProxy('table')
observeEvent(input$table_cell_edit, {
info = input$table_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
df[i, j] <- isolate(DT::coerceValue(v, df[i, j]))
df[i,which(colnames(df)=='am')] <- df[[i, j]]*2
replaceData(proxy, df, resetPaging = FALSE)
})
}
)
任何指点都将不胜感激 解决了
多亏了这篇文章。。。
解决方案是在renderDT()函数中隔离被动df,如下所示
library(shiny)
library(DT)
library(dplyr)
shinyApp(
ui = fluidPage(
DTOutput('table')
),
server = function(input, output, session) {
x = reactiveValues(df = mtcars %>% select(vs,am))
output$table = renderDT(isolate(x$df), editable = TRUE)
proxy = dataTableProxy('table')
observeEvent(input$table_cell_edit, {
info = input$table_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
x$df[i, j] <- isolate(DT::coerceValue(v, x$df[i, j]))
x$df[i,which(colnames(x$df)=='am')] <- x$df[[i, j]]*2
replaceData(proxy, x$df, resetPaging = FALSE) # important I have tried with and without this line no impact on page resetting
})
}
)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
shinyApp(
ui=fluidPage(
DTOutput('表')
),
服务器=功能(输入、输出、会话){
x=反应值(df=mtcars%>%select(vs,am))
输出$table=renderDT(隔离(x$df),可编辑=TRUE)
proxy=dataTableProxy('表')
observeEvent(输入$table\u cell\u edit{
信息=输入$table\u cell\u edit
str(信息)
i=信息$行
j=信息$col
v=信息$value
x$df[i,j]由于某种原因,当我使用replaceData
时,该表变为空,但如果我使用reloadData
,它会工作。我查看了replaceData,文档中说它调用reloadData函数。