Estoy tratando de reutilizar este ejemplo datable de filas secundarias/principales en una aplicación brillante que estoy creando:
https://rstudio.github.io/DT/002-rowdetails.html
También hay una ligera modificación que permite agregar varias filas:
https://github.com/rstudio/DT/issues/393#issuecomment-279627237
Sin embargo, mi caso es un poco diferente. Tengo un marco de datos con una variable principal de agrupación principal y filas secundarias. Las filas secundarias pueden ser de 0 a n. Quiero mostrar mi variable principal una vez y todos sus hijos ocultos debajo de ella.
Aquí hay algunos datos de muestra:
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"))
Advertencia: no sé javascript y no tengo idea de cómo adaptar dicho código. He visto varios ejemplos que intentan abordar el mismo problema, sin embargo, hay mucho código y personalización para ellos. Esperaba que el ejemplo más simple anterior fuera más fácil de modificar y que alguien pudiera guiarme a través de él. Tampoco necesito ningún formato sofisticado. Aquí hay algunos ejemplos que he visto:
Puedes usar este código en la parte del servidor:
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/>')) })
El código agrupará el marco de datos y luego agregará las cadenas necesarias con etiquetas html como separadores. La cadena resultante se renderizará.
Esta línea es necesaria en la interfaz de usuario para la salida de HTML renderizado:
htmlOutput("txt")
Esto lo obtienes en tu navegador: