首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R reactable -展开/解组由groupBy()创建的单个项目组

R reactable -展开/解组由groupBy()创建的单个项目组
EN

Stack Overflow用户
提问于 2020-10-09 09:26:54
回答 2查看 345关注 0票数 1

我正在尝试使用Shiny中的reactable生成一个交互表,它只为在单个键变量下包含多个值的行创建可扩展的组。

代码语言:javascript
复制
library(reactable)
library(data.table)

data <- setDT(MASS::Cars93[10:22, c("Manufacturer", "Model", "Type", "Price", "MPG.city")])

reactable(data, groupBy = "Manufacturer")

上面的表格只显示了Chrylser下的一个条目-我希望它自动展开,或者理想情况下根本没有展开箭头,并在一行上显示所有信息。

一些乱七八糟的代码生成了一个表格,其中大致显示了我想要的内容:

代码语言:javascript
复制
data_unique <- unique(data, by = "Manufacturer")
data_dups <- unique(data[duplicated(data, by = "Manufacturer")]$Manufacturer)
reactable(data_unique,
          columns = list(Manufacturer = colDef(details = function(index){
                                               if(data_unique[index]$Manufacturer %in% data_dups){
                                                  reactable(data[Manufacturer == data_unique[index]$Manufacturer,
                                                                                             c("Model", "Type")])
                                                  }})))

Chrylser现在不再有一个展开按钮,并在一行中显示其所有信息。主要问题是展开按钮会产生一个单独的表,该表不会与主表对齐。我喜欢第一个示例使用groupBy()产生的行为,所以理想情况下我应该将两者结合起来。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-09 19:02:50

正如您所说的,您希望在shiny中使用它,我可以考虑使用JavaScript自动触发单击事件:

代码语言:javascript
复制
library(shinyjs)

ui <- fluidPage(useShinyjs(), reactable(data, groupBy = "Manufacturer"))

server <- function(input, output, session) {
   session$onFlushed(function() {
      runjs('$(".rt-td>div>span").filter(function(idx, el) {return $(el).text().includes("(1)")}).trigger("click")')
   })
}

shinyApp(ui, server)
票数 1
EN

Stack Overflow用户

发布于 2021-10-06 21:46:45

您可以简单地使用“aggregate”函数来实现这一点-

示例:

代码语言:javascript
复制
 reactable(data,
                 groupBy = c("Manufacturer"),
                 resizable = TRUE,
                 ......
                 columns = list("Model" = colDef(aggregate = "unique"),
                                "Type" = colDef(aggregate = "unique")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64272739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档