es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar varias filas agrupadas como resultado de búsqueda/filtro en R (Utilizando datatables u otras alternativas)

Una pregunta aparentemente fácil de formato para datatables, con R. Me gustaría devolver tablas/resultados en mi flexdashboard que estén formateados ligeramente de manera diferente al formato predeterminado.

No estoy seguro si datatables es la mejor manera de hacer esto, pero básicamente tengo algunos filtros de crosstalk en un flexdashboard que los usuarios pueden usar para filtrar un conjunto de resultados de texto de caracteres (básicamente una búsqueda de contenido que podría mostrarse como un resultado de búsqueda de Google).


Datos de muestra:

sample <- data.frame(Title = c("Title #1", "Title #2", "Title #3"),
                     Description = "Lorem ipsum dolor sit amet",
                     Date = c("2021-01-01", "2021-01-01", "2021-01-01"),
                     Link = c("www.google.com", "www.facebook.com", "www.twitter.com"))
datatable(sample, rownames = FALSE, colnames = c("","","",""), options = list(dom = 't', bSort=FALSE))

Resultado deseado:

enter image description here

Estoy trabajando con flexdashboard y crosstalk, por lo que cualquier solución alternativa a datatables debería tener eso en cuenta.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el formato deseado para la tabla de datos en el flexdashboard, podemos utilizar la función formatStyle del paquete DT en combinación con la función datatable. Aquí tienes un ejemplo:

    “`{r}
    library(DT)

    sample <- data.frame(Título = c(“Título #1”, “Título #2”, “Título #3”),
    Descripción = “Lorem ipsum dolor sit amet”,
    Fecha = c(“2021-01-01”, “2021-01-01”, “2021-01-01”),
    Enlace = c(“www.google.com”, “www.facebook.com”, “www.twitter.com”))

    datatable(sample, rownames = FALSE, colnames = c(“”,””,””,””), options = list(dom = ‘t’, bSort = FALSE),
    style = “bootstrap”, class = “table-striped”) %>%
    formatStyle(columns = “Enlace”, valueColumns = “Enlace”,
    font-weight = “bold”, backgroundColor = “#f0f8ff”,
    target = “row”)
    “`

    En este ejemplo, primero cargamos el paquete DT y creamos el marco de datos sample. Luego utilizamos la función datatable para crear la tabla, con rownames = FALSE y colnames = c("","","","") para eliminar los nombres de fila y columna respectivamente. También agregamos options = list(dom = 't', bSort = FALSE) para personalizar la visualización de la tabla.

    A continuación, utilizamos el operador %>% para agregar formato a la tabla utilizando la función formatStyle. El argumento columns especifica qué columna se desea formatear, y el argumento valueColumns especifica qué columna se utilizará como valores para el formato. Establecemos el grosor de la fuente en “bold”, el color de fondo en “#f0f8ff” y el argumento target en “row” para aplicar el formato a toda la fila en lugar de solo a la celda.

    Finalmente, establecemos style = "bootstrap" y class = "table-striped" para personalizar aún más la apariencia de la tabla según la plantilla de Bootstrap.

    Esto debería darte una tabla con el formato deseado como se muestra en la imagen.

Comments are closed.