R 数据表中闪亮的父子行
Posted
技术标签:
【中文标题】R 数据表中闪亮的父子行【英文标题】:R Shiny parent child rows in datatable 【发布时间】:2021-12-07 04:39:25 【问题描述】:我正在尝试在我正在构建的闪亮应用中重用这个子/父行的可数据示例:
https://rstudio.github.io/DT/002-rowdetails.html
还有一个细微的修改,允许添加多行:
https://github.com/rstudio/DT/issues/393#issuecomment-279627237
但是,我的情况有点不同。我有一个主要分组父变量和子行的数据框。子行可以是从 0 到 n 的任何值。我想显示我的父变量一次,所有子变量都隐藏在它下面。
以下是一些示例数据:
library(dplyr)
df = data.frame() %>%
rbind(c("parent1", "childA", "desc1")) %>%
rbind(c("parent1", "childB", "desc2")) %>%
rbind(c("parent2", "childC", "desc3")) %>%
rbind(c("parent3", "childD", "desc4")) %>%
rbind(c("parent4", "childE", "desc5")) %>%
rbind(c("parent4", "childF", "desc6")) %>%
rbind(c("parent4", "childG", "desc7")) %>%
`colnames<-`(c("parentID", "childID", "childDesc"))
警告:我不懂 javascript,也不知道如何调整此类代码。我已经看到了多个尝试解决相同问题的示例,但是,它们有很多代码和自定义。我希望上面更简单的示例更容易修改,并且有人可以引导我完成它。我也不需要任何花哨的格式。以下是我见过的一些例子:
Parent/Child Rows in R
Parent/Child Rows in Shiny R with a single dataframe that has a variable number of rows
Parent/Child Rows in R shiny Package
Parent/Child Rows in Shiny R with a single dataframe that has a variable number of rows
【问题讨论】:
【参考方案1】:您可以在服务器部分使用此代码:
output$txt <- renderUI(
df =
data.frame() %>%
rbind(c("parent1", "childA", "desc1")) %>%
rbind(c("parent1", "childB", "desc2")) %>%
rbind(c("parent2", "childC", "desc3")) %>%
rbind(c("parent3", "childD", "desc4")) %>%
rbind(c("parent4", "childE", "desc5")) %>%
rbind(c("parent4", "childF", "desc6")) %>%
rbind(c("parent4", "childG", "desc7")) %>%
`colnames<-`(c("parentID", "childID", "childDesc")) %>%
# this has already been done by you
group_by(parentID) %>% #you group the frame by parents
summarise(children = paste(childID, collapse = "</p><p>"))%>%
#apply the aggregate function
mutate(concatenated = paste0("<h3>", parentID, "</h3>", "<p>", children,"</p>"))
#combine the two columns:
HTML(paste(df$concatenated, sep = '<br/>'))
)
代码将对数据框进行分组,然后用 html 标签作为分隔符聚合必要的字符串。结果字符串将被渲染。
此行在 UI 中是必需的,用于输出呈现的 HTML:
htmlOutput("txt")
这是您在浏览器中看到的:
【讨论】:
非常感谢您。您将如何折叠和展开父行,即隐藏子行。 @Cola4ever 这是一项更复杂的任务。请参阅shinyTree
库。如果对您有帮助,您可以接受答案。
@Cola4ever 您还可以使用ul
/ li
标签将它们添加到所示的表达式中。 Css 将为您提供功能以上是关于R 数据表中闪亮的父子行的主要内容,如果未能解决你的问题,请参考以下文章