相关疑难解决方法(0)

在保持位置的同时更新Shiny DataTable的行

我正在创建一个Shiny应用程序,它在屏幕顶部显示data.frame信息,在底部显示特定的变量统计信息.用户可以通过与DT::datatable对象交互来导航data.frame列.

当用户点击变量时,会显示可以编辑的详细信息.我希望这些信息能够更新并反映在数据表中.我的问题是,当我更新表时,它会从一开始就呈现并显示.如何在编辑后保留数据表的页面和行选择?

这是一个最小的工作示例,显示了a中的mtcars数据集DT::datatable.我有一些控制更新字段.请注意,数据表重新渲染回第一页.

library(shiny)

runApp(shinyApp(

  ui = fluidPage(
    title = "minimal-working-example",
    fluidRow(
      column(3, inputPanel(
        selectInput("field", "Field", choices = names(mtcars)),
        numericInput("value", "Value", 0),
        actionButton("submit", "Submit")
      )),

      column(9,
        DT::dataTableOutput("table")
      )
    )
  ),

  server = function(input, output) {

    v <- reactiveValues(mtcars=mtcars)

    observeEvent(input$submit, {
      v$mtcars[input$field] <- input$value
    })

    output$table <- DT::renderDataTable({
      DT::datatable(
        v$mtcars,
        selection = "single",
        options = list(pageLength = 5))
    })
  }
))
Run Code Online (Sandbox Code Playgroud)

会话信息:

Session info --------------------------
 setting  value                       
 version  R version 3.3.0 (2016-05-03)
 system   x86_64, mingw32             
 ui …
Run Code Online (Sandbox Code Playgroud)

r shiny dt

8
推荐指数
1
解决办法
2963
查看次数

预先选择动态DT中闪亮的行

这个问题的更多动态版本

我在闪亮的应用程序中有一个DT,初始化时可能为空。我想预选DT中的所有行。我的第一次尝试是这样的:

library(shiny)
library(DT)
shinyApp(
  ui = fluidPage(
    fluidRow(
      radioButtons("select", "", c("none", "iris")),
      DT::dataTableOutput('x1')
    )
  ),
  server = function(input, output, session) {
    data <- reactive({
      if (input$select == "none") {
        return(NULL)
      } else if (input$select == "iris"){
        return(iris)
      }
    })
    output$x1 = DT::renderDataTable(
      data(), server = FALSE,
      selection = list(mode = 'multiple', selected = seq_len(nrow(data())))
    )
  }
)
Run Code Online (Sandbox Code Playgroud)

它选择正确,但Warning: Error in seq_len: argument must be coercible to non-negative integer开头有错误。我认为这是因为seq_len无法接受NULL输入。有趣的是,初始化之后,来回切换不会产生新的错误。

我尝试使用此版本对行向量使用反应值,对空输入使用空结果:

library(shiny)
library(DT) …
Run Code Online (Sandbox Code Playgroud)

r shiny dt

1
推荐指数
1
解决办法
1106
查看次数

标签 统计

dt ×2

r ×2

shiny ×2