En gt: Seleccionar celdas para darles formato basado en las posiciones relativas de las celdas y columnas, no en un nombre de columna literal.
En el siguiente ejemplo, la tabla 1 es un ejemplo funcional que especifica el nombre de la columna directamente en la especificación de la fila. Esto me da el resultado que quiero, pero no quiero llamar directamente a los nombres de las columnas. En su lugar, quiero referirme a ellos indirectamente (debido a que usaré este código en muchas tablas con las mismas dimensiones pero con diferentes nombres). La tabla 2 intenta hacer esto, pero no funciona. ¿Existe una forma adecuada de lograr mi objetivo?
df <- data.frame(colA = c(5, 10), colB = c(8, 9))
table1 <- df %>%
gt() %>%
tab_style(style = cell_text(color = "red"),
locations = cells_body(columns = colB,
rows = colB > 8))
table1
table2 <- df %>%
gt() %>%
tab_style(style = cell_text(color = "red"),
locations = cells_body(columns = ends_with("B"),
rows = last_col() > 8))
table2
davy.ai
Sí, existe una forma adecuada de referirse a los nombres de columna indirectamente en el paquete gt. En lugar de usar la función
ends_with()
, se puede usar la funciónmatches()
para hacer coincidir los nombres de columna usando expresiones regulares. Aquí hay una versión actualizada detable2
que logra el resultado deseado:En este código,
matches("B$")
hace coincidir cualquier columna que termine con “B”.$
es un caracter de expresión regular que hace coincidir el final de una cadena. Por lo tanto,"B$"
hace coincidir cualquier cadena que termine con “B”.