2017-07-25 4 views
2

Formattable ont des options faciles à formater table, par exemple:Possibilité de combiner DT, formatable et brillant?

library(shiny) 
library(DT) 
library(formattable) 

    df <- formattable(iris, lapply(1:4, function(col){ 

    area(col = col) ~ color_tile("red", "green") 

Cela peut ensuite être coverted à un DT datatable

df <- as.datatable(df) 

Pour moi, il fonctionne perfefect pour voir dans l'afficheur en RStudion. Cependant, je voudrais le déployer comme une application Shiny en quelque sorte. Code complet:

library(DT) 
library(shiny) 

ui <- fluidPage(
    DT::dataTableOutput("table1")) 


server <- function(input, output){ 

    df <- formattable(iris, lapply(1:4, function(col){ 

    area(col = col) ~ color_tile("red", "green") 

    })) 

    df <- as.datatable(df) 

    output$table1 <- DT::renderDataTable(DT::datatable(df)) 

} 

shinyApp(ui, server) 

Cela ne fonctionne pas, y a-t-il un problème? J'aime la mise en forme conditionnelle de formattable, mais voudrais aussi utiliser certaines options qui DT offre comme par exemple le filtrage, la recherche, etc. colvis

Pour déployer tout comme un formattable il y a un fil:

How to use R package "formattable" in shiny dashboard?

Répondre

2

Oui, il semble être possible, comme aussi mentionné here. Voici un exemple de code sur la façon d'y parvenir:

library(shiny) 
library(data.table) 
library(formattable) 

ui <- fluidPage(
    selectInput("input1","Species: ", choices = c("setosa", "versicolor", "virginica")), 
    DT::dataTableOutput("table1")) 

# make a data.table of the iris dataset. 
df <- iris 

server <- function(input, output){ 

    output$table1 <- DT::renderDataTable({ 

    my_df <- df[df$Species==input$input1,] 

    return(as.datatable(formattable(my_df, lapply(1:4, function(col){area(col = col) ~ color_tile("red", "green")})))) 
    } 
) 

} 

shinyApp(ui, server) 
+0

Avez-vous réussi à l'utiliser sur votre ordinateur? J'ai copié collé et obtenu des erreurs de support, mais tout semble correct ... – MLEN

+0

Désolé, c'était bâclé. J'ai fait une modification de mon code alors que je l'avais déjà copié dans Stack Overflow, mais j'ai raté un crochet. S'il vous plaît voir ma réponse mise à jour. – Florian

+0

Comment puis-je ajouter un argument supplémentaire à DT maintenant? Par exemple, échapper aux noms de famille. – MLEN