Como traductor de español que se especializa en documentos de tecnología de la información, puedo ayudarte a traducir la siguiente frase: “format a table with a nested column with kable()” a español. “formatear una tabla con una columna anidada mediante kable()” Espero que esto sea de ayuda. Si necesitas más asistencia, no dudes en preguntar.
Estoy creando un documento R Markdown que muestra el proceso de realizar algunas simulaciones. En resumen, las simulaciones serán combinaciones de dos variables, cada una con 100 intentos. A veces, quiero mostrar un dataframe en el .rmd a medida que se construye el dataframe de simulación. A veces, esto implica mostrar un dataframe con una columna anidada (anidada con tidyr
) solo para mostrar “mira, hay 100 cosas aquí”.
Cuando uso head()
para mostrar un dataframe con una columna anidada, la columna anidada aparece como <list>
con las dimensiones (ver imagen 1). Ver imagen a continuación. Me gusta esta salida porque todo lo que quiero mostrar es “mira, hay 100 cosas colapsadas aquí”.
Sin embargo, cuando uso kable()
, (que preferiría por razones de formato), expande la columna de lista con comas, lo cual no me gusta. Ver aquí:
¿Hay alguna forma de tener el formato kable, pero aun así mostrar la columna anidada como <tibble [100 × 1]>
?
Fragmento de código R para rmd aquí:
`“{r, message=FALSE}
library(tibble)
library(dplyr)
library(tidyr)
library(knitr)
library(kableExtra)
df <- tibble(
var1 = c(1,2,3,1,2,3,1,2,3),
var2 = c("a","a","a","b","b","b","c","c","c")
) %>%
group_by(var1, var2) %>%
slice(rep(1:n(), each = 100)) %>%
mutate(trial = c(1:n())) %>%
nest(data = trial)
head(df)
kable(head(df)) %>%
kable_minimal()
`“
`“
davy.ai
Sí, puedes utilizar la función
cell_spec()
del paquetekableExtra
para dar formato a las celdas de la columna anidada. Aquí tienes un fragmento de código R actualizado para tu archivo R markdown:“`{r, message=FALSE}
library(tibble)
library(dplyr)
library(tidyr)
library(knitr)
library(kableExtra)
df <- tibble( var1 = c(1,2,3,1,2,3,1,2,3), var2 = c("a","a","a","b","b","b","c","c","c") ) %>%
group_by(var1, var2) %>%
slice(rep(1:n(), each = 100)) %>%
mutate(trial = c(1:n())) %>%
nest(data = trial)
head(df)
kable(df, “html”) %>%\n{nrow(x)} x 1 “, x = df$data)
kable_minimal() %>%
# dar formato a las celdas de la columna “data”
cell_spec(
rows = 1:nrow(df),
cols = “data”,
# utilizar stringr::str_interp() para dar formato al texto en las celdas
#
{nrow(x)} x 1
será reemplazado por las dimensiones del data frame anidado# se utilizan acentos graves para mostrar
<
y>
en la salidaformat = “html”,
# utilizar barras invertidas para escapar los caracteres especiales en el código HTML
value = str_interp(“
)
“`
En la función
cell_spec()
, especificamos las filas y columnas donde queremos dar formato a las celdas. Aquí, queremos dar formato a todas las filas de la columna “data”, así que configuramosrows = 1:nrow(df)
ycols = "data"
.Luego, utilizamos el argumento
value
para dar formato al texto en las celdas. Utilizamosstringr::str_interp()
para interpolar las dimensiones del data frame anidado ({nrow(x)} x 1
) en un bloque de código HTML que se ve como<tibble>\n100 x 1</tibble>
. Las barras invertidas se utilizan para escapar los caracteres especiales en el código HTML.Esto debería darte una tabla con un formato atractivo y las dimensiones del data frame anidado en la columna “data”.