J'ai une table de données que j'affiche avec DT. Dans deux colonnes, j'affiche des pourcentages et je veux afficher des barres de fond. Cependant le nombre de colonnes peut changer en fonction de la table choisie. Il y aura soit une ou deux colonnes de pourcentage.Erreur d'affichage de la table de données DT
Voici quelques données fictives et mon approche jusqu'à présent qui utilise grep sans succès.
a <- c(45, 143, 123, 120, 118, 109, 94, 81)
b <- c(54, 132, 119, 113, 108, 104, 99, 91)
a2 <- round(a/sum(a)*100,2)
b2 <- round(b/sum(b)*100,2)
dt <- data.table("Age" = c("-20", "20-30", "30-40", "40-50",
"50-60", "60-70", "70-80", "80+"),
"Group A" = a,
"Group A %" = a2,
"Group B" = b,
"Group B %" = b2)
if(sample(c(0,1), 1)==1) x <- dt else x <- dt[ ,c(1:3)]
DT::datatable(x,
rownames = FALSE,
extensions = c('FixedColumns'),
class = 'cell-border stripe',
options = list(dom = 't',
pageLength = nrow(x),
columnDefs = list(list(className = 'dt-center', targets = 0:(ncol(x)-1)))
)
) %>%
formatStyle(
grep("%", colnames(x), value=TRUE),
background = styleColorBar(x[, .SD, .SDcols=grep("%", colnames(x), value=TRUE)], 'steelblue'),
backgroundSize = '50% 50%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'right')
Malheureusement, cela crée l'erreur:
*Error in FUN(X[[i]], ...) : only defined on a data frame with all numeric variables*
Alors, comment puis-je sélectionner dynamiquement les colonnes pour afficher les barres?
Toute aide très appréciée.
parfaite et sans grande réécriture. Je vous remercie. –