2014-07-14 5 views
1

Je suis relativement nouveau à R et essayant de travailler avec le paquet Shiny. J'ai quelque chose de très similaire à ceci: http://shiny.rstudio.com/gallery/basic-datatable.html afin que nous puissions travailler avec le code là-bas. Ce que je veux ajouter, c'est que certaines cellules/lignes deviennent en surbrillance (arrière-plan coloré ou police colorée). Si vous regardez l'exemple, je voudrais avoir des lignes/cellules (soit toute la rangée ou juste la cellule, n'a pas d'importance) rouge si la voiture a 8 ou plus cyl, jaune si elle a 6 ou moins, vert si elle a 4 ou moins.R: Highlighting Shiny tableau de données

Y at-il un moyen de le faire avec le paquet Shiny? J'ai essayé avec ShinyBS, mais ça ne fait rien. J'ai également vu ceci: http://shiny.rstudio.com/gallery/datatables-demo.html. Les colonnes triées obtiennent une nouvelle couleur ici. C'est au moins un peu le long de ce que je veux, donc j'ai pensé que CSS pourrait être la réponse, mais je n'ai rien obtenu avec.

J'espère que n'importe qui peut vous aider!

+0

Dans www folder, vous pouvez définir style.css pour Hilighting :) – Aashu

+0

Pouvez-vous faire un exemple? – user3804488

Répondre

1

Vous pouvez créer un champ flag pour correspondre aux couleurs et utiliser styleEqual de `` DT```

df <- mtcars 

df$colr_flag <- ifelse(df$cyl <= 4, 1, 
        ifelse(df$cyl <=6, 2, 
          ifelse(df$cyl >=8, 3, 0))) 


library(DT) 
options(DT.options = list(pageLength = 5)) 
# style V6 based on values of V6 
datatable(df) %>% formatStyle(
    'colr_flag', target = 'row', 
    backgroundColor = styleEqual(c(1, 2,3), c('green', 'yellow','red')) 
) 

enter image description here

1

Sans créer une nouvelle colonne:

jscode <- " 
value <= 4 ? 'green' : (value <= 6 ? 'yellow' : (value >= 8 ? 'red' : 'white')) 
" 

datatable(mtcars) %>% formatStyle(
    "cyl", target = "row", 
    backgroundColor = JS(jscode)) 

ou en utilisant la fonction styleInterval:

datatable(mtcars) %>% formatStyle(
    "cyl", target = "row", 
    backgroundColor = styleInterval(c(4, 6, 7), c("green", "yellow", "white", "red"))) 
Questions connexes