J'essaie de développer une application Shiny permettant d'automatiser mes résultats. Étant débutant en Shiny, je bloque sur quelques points.
Pour l'instant mon objectif est d'importer deux jeux de données (format excel) et de construire une base correspondant aux colonnes communes de ces jeux de données.
J'ai du mal à gérer les objets dans shiny ... Le but serait que l'utilisateur choisisse les deux jeux à l'aide d'un fileInput et qu'il soit stocké en mémoire.
Je ne sais pas si je m'y prend correctement malgré avoir parcouru de nombreux sites ...
NB : inFile2$Annee <- input$annee2 consiste a créer une nouvelle variable dans le fichier avec pour chaque ligne l'année d'étude. Je ne sais pas si la syntaxe est bonne.
UI :
Code : Tout sélectionner
shinyUI(
fluidPage(
navbarPage(div(img(src="LogoXpertia2.gif"),"Classification Rentabilite"),
###########################################################
# 1er onglet : Importation #
###########################################################
tabPanel("Importation",
sidebarLayout(
sidebarPanel(
fileInput('donnees1', "Importez fichier annee_N :"),
tags$hr(),
checkboxInput('header1', "1ere ligne = Noms variables", TRUE),
numericInput("sheet1", "Onglet n°:", 2),
numericInput("annee1", "Annee d'etude :", 2014),
br(),
fileInput('donnees2', "Importez fichier annee_N+1:"),
tags$hr(),
checkboxInput('header2', "1ere ligne = Noms variables", TRUE),
numericInput("sheet2", "Onglet n°:", 8),
numericInput("annee2", "Annee d'etude :", 2015)
),
mainPanel(
)
)
),
###########################################################
# 2eme onglet : #
###########################################################
tabPanel("Résumé",
verbatimTextOutput("summary")
)
SERVER :
Code : Tout sélectionner
shinyServer(function(input, output) {
#Import Annee N
donnees_N <- reactive({
inFile <- input$donnees1
if (is.null(inFile))
return(NULL)
file.rename(inFile$datapath,
paste(inFile$datapath, ".xlsx"))
readXL(paste(inFile$datapath,".xlsx"),rownames=FALSE, header=input$header1, na="", sheet=input$sheet1,stringsAsFactors=TRUE)
})
#Import Annee N+1
donnees_N_1 <- reactive({
inFile2 <- input$donnees2
if (is.null(inFile2))
return(NULL)
file.rename(inFile2$datapath,
paste(inFile2$datapath, ".xlsx"))
readXL(paste(inFile2$datapath,".xlsx"),rownames=FALSE, header=input$header2, na="", sheet=input$sheet2,stringsAsFactors=TRUE)
inFile2$Annee <- input$annee2
})
})
})
J'ai testé pas mal de chose que j'ai retiré pour le post ne sois pas trop imbuvable. Par exemple je voulais essayer de faire un summary de donnees_N pour voir si l'import s'était bien déroulé : (aucune erreur mais le résume n'apparait pas)
Code : Tout sélectionner
output$summary <- renderTable({
if (is.null(donnees_N())){return()}
summary(donnees_N())
})
Si quelqu'un voit où est le problème. Faut-il bien stocker mes données avec "reactive"
Merci d'avance,
Cdlt