簡體   English   中英

R 數據表中的閃亮父子行

[英]R Shiny parent child rows in datatable

我正在嘗試在我正在構建的閃亮應用程序中重用這個子/父行的可數據示例:

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,也不知道如何修改這些代碼。 我已經看到多個示例試圖解決同一問題,但是,它們有太多的代碼和自定義。 我希望上面更簡單的例子更容易修改,有人可以引導我完成它。 我也不需要任何花哨的格式。 以下是我見過的一些例子:

R 中的父/子行

Shiny R 中的父/子行具有可變行數的單個數據框

R 閃亮包中的父/子行

Shiny R 中的父/子行具有可變行數的單個數據框

您可以在服務器部分使用此代碼:

    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")

這是您在瀏覽器中獲得的:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM