2017-07-10 4 views
0

J'ai l'objet TABLE_LIST qui est une liste qui a des tables (je ne peux pas fournir le contenu des politiques de confidentialité, désolé).Dans Formattable de package R, comment appliquer simultanément des chiffres et un formatage conditionnel?

j'ai créé le liste_tables d'objet (Il est une liste de data.frames 2x12)

TABLE_LIST=lapply(1:4, function(x) data.frame(rbind(total.ratio4[[x]][-(1)], total.ratio2[[x]][-(1)]), row.names=row)) 

Le code suivant me donne les couleurs de police rouge et vert en fonction de la valeur de la cellule, et il fonctionne comme un charme:

formattable(TABLE_LIST[[1]], list(area(,-(c(5,10)))~formatter("span", style=x~style(color=ifelse(x>1,"red","green"))),area(,(c(5,10)))~formatter("span", style=x~style(color=ifelse(x>1,"green","red"))))) 

Cependant, j'ai besoin de numéros séparés par des virgules. Ma tentative échouée est:

formattable(TABLE_LIST[[1]], list(area(,-(c(5,10)))~formatter("span", style=x~style(color=ifelse(x>1,"red","green"))),area(,(c(5,10)))~formatter("span", style=x~style(color=ifelse(x>1,"green","red"),digits(x,2))), 

area(1:2,1:10)~formatter("span",x~ style(digits(x,2))))) 

Ce code fonctionne bien, mais efface le formatage de la couleur. Je ne sais pas quoi faire d'autre.

Je dois mentionner que je ne peux pas changer le data.frame original sans tout gâcher. Donc je dois faire les changements sur table_list ou formatable. Je vous remercie.

Répondre

0

Je pense que je l'ai résolu. Je vais donc partager cette petite connaissance aux personnes qui peuvent avoir les mêmes problèmes que moi:

formattable(TABLE_LIST[[1]], list(area(,-(c(5,10)))~formatter("span", 
style=x~style(color=ifelse(x>1,"red","green")),x~style(digits(x,4))), 
area(,(c(5,10)))~formatter("span",style=x~style(color=ifelse(x>1,"green","red")), 
x~style(digits(x,4))))) 

En gros, à l'intérieur même formatter, au niveau du style, ajouter une virgule et x~style.