首页 > 解决方案 > 有人可以解释 DT::dataTableProxy 是如何工作的吗?

问题描述

我一直在努力掌握如何使 DT::dataTableProxy Using DT in Shiny在我的应用程序中工作,但我无法通过返回选定的列。

按照此处的示例,我尝试修改代码以打印描述性统计信息(使用pastecs)。但唯一呈现的是选择的文字列。

#modified UI, adding another verbatimTextOutput

ui = 
...
verbatimTextOutput('foo2')

server = 
...
  output$foo2= renderPrint({
    x<-input$foo_columns_selected
    stat.desc(x)
  })

结果:ShinyApp 的图片

我想做的是获取所选列的值,然后运行函数stat.desc。在上面的示例中,它将在第 2 列 (Sepal.Width) 上运行,并呈现描述性统计信息。像这样:

控制台命令和所需的反应输出

展望未来,我想对stat.desc来自多个 selectInputs 的渲染 DataTable 执行。但是..一步一步。我想首先掌握如何获取实际值来执行功能。

更新!

所以,我想我想出了如何成功地完成我所需要的。如果其他用户可以验证它是否正常工作,我会很高兴

更新脚本:

require(DT)
library(dplyr)
library(tibble)

ui<-
  fluidPage(

    selectInput('obj','Choose Name:', choices = c('',my.data$Name), selectize = TRUE),
    dateRangeInput('daterange',"Date range:",
                   start= min(my.data$Date),
                   end = max(my.data$Date)),

    mainPanel(
      dataTableOutput('filteredTable'),
      dataTableOutput('filteredTable2'),
      tableOutput('table')
    )
)

server<-function(input,output, session){



  filteredTable_data <- reactive({

    my.data %>% rownames_to_column() %>%  ##dplyr's awkward way to preserve rownames

      filter(., Name == input$obj) %>%
      filter(., between(Date ,input$daterange[1], input$daterange[2])) %>%
      column_to_rownames()

    })

##explicit assignment to output ID

  DT::dataTableOutput("filteredTable")

  output$filteredTable <- DT::renderDataTable({

    datatable(

      filteredTable_data(),

      selection = list(mode = "multiple"),

      caption = "Filtered Table (based on cyl)"

       )

    })

  filteredTable_selected <- reactive({
    ids <- input$filteredTable_rows_all
    filteredTable_data()[sort(ids),]  ##sort index to ensure orig df sorting
  })

  ##anonymous
  output$filteredTable2<-DT::renderDataTable({

    x<-filteredTable_selected() %>% select(starts_with("Value"))

    x<-as.data.frame(stat.desc(x))

    datatable(
      x)

  })

}

shinyApp(ui, server)

结果:

参数 1 第2部分 第三部分 第 4 部分

以下答案非常有帮助:不允许从闪亮的输出对象中读取对象?&如何从过滤数据表 (DT) 的选定行中获取数据?

标签: rshinydt

解决方案


推荐阅读