Problem to deploy shiny App with a file sored in server

Hi,

I'm actually new using Shiny and I need your help to solve a problem.

I wrote a code that works locally. However when I try to deploy the app using shiny app it does not work. I read a ot of things and I partially understood why. I need the file to be stored in a server because many people can modidy it.

Now, one solution could be to dowload the file before loading the UI and Server but I don't know how to do it. Here the code that I wrote. If anyone could help me, it will be very nice!

library(shiny)
library(shinydashboard)
library("psych")#ICC
library("WriteXLS")
library("psych")#ICC
library("WriteXLS")
library(sp)
library(spatstat)
library(raster)
library(fields)
library(akima)
library("tcltk2")
library("gdata")
library("plot3D")
library("png")
library(tidyverse)






#####   lecture du fichier sous R   ######
raw<-read.xls(file,sheet="Equipe", header = TRUE,skip=0)
attach(raw)#permet de travailler sur le fichier "raw"
raw1<-read.xls(file,sheet="Reca", header = TRUE,skip=0)
raw1<-subset(raw1,raw1[,12]=="R0"|raw1[,12]=="R1"|raw1[,12]=="R2"|raw1[,12]=="R3"|raw1[,12]=="RA")


x<-left_join(raw,raw1)



#####   Creation de l'UI    ######
ui <- 

  dashboardPage(
  dashboardHeader(),
  
  dashboardSidebar(
    sidebarMenu(
      menuItem("Selection",icon=icon("dashboard")),
      selectInput(inputId = "results", label = "De quelle équipe voulez-vous regarder les joueurs ?",
                  choices=levels(raw[,2])),
      uiOutput("textORdate")
    )), 
  dashboardBody(
    fluidRow(
      infoBoxOutput("Pilier"),tags$style("#Pilier{width:245px;}"),
      infoBoxOutput("Talonneur"),tags$style("#Talonneur{width:245px;}"),
      infoBoxOutput("SecondeL"),tags$style("#SecondeL{width:245px;}"),
      infoBoxOutput("TroisiemeL"),tags$style("#TroisiemeL{width:245px;}")
    ),
    
    fluidRow(
      infoBoxOutput("Centre"),tags$style("#Centre{width:245px;}"),
      infoBoxOutput("Ouverture"),tags$style("#Ouverture{width:245px;}"),
      infoBoxOutput("Melee"),tags$style("#Melee{width:245px;}"),
      infoBoxOutput("Ailier"),tags$style("#Ailier{width:245px;}")
    ),
    
    fluidRow(
      column(width=4,
             box(title="Pilier",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Pilier"))),
      column(width=4,
             box(title="Talonneur",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Talonneur"))),
      column(width=4,
             box(title="Seconde Ligne",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_2L"))
      ),
      column(width=4,
             box(title="Troisieme Ligne",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_3L"))
      ),
      column(width=4,
             box(title="Centres",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Centre"))
      ),
      column(width=4,
             box(title="Ailier - Arriere",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Ailier"))
      ),
      column(width=4,
             box(title="1/2 Melee",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Melee"))
      ),
      column(width=4,
             box(title="1/2 Ouverture",height="530",width="16",solidHeader = T,status="primary",
                 tableOutput("mat_Ouverture"))
      )
    )
  )) 



######     Code qui marche     ######
#####     Define the server logic    #####
server <- function(input, output) {
  
  #####     Creation de la matrice pour enregistrer le statut du joueur     ######
  
  observeEvent(input$results,{
    
    #Pour les piliers    
    x_Pilier<-x[,1][x[,2]==input$results&x[,3]=="Pilier"]
    z_Pilier<-(x_Pilier%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Pilier"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Pilier"]=="R0"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Pilier"]=="R1"# | = ET joueurs blessés dont le stade = R1
                 |x[,12][x[,2]==input$results&x[,3]=="Pilier"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Pilier<-(x_Pilier%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Pilier"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Pilier"]=="RA"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Pilier"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Pilier<-as.data.frame(matrix(ncol=4,nrow=length(x_Pilier)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Pilier[,1]<-as.data.frame(x_Pilier)
    mat_joueur_Pilier[,2]<-as.data.frame(z_Pilier)
    mat_joueur_Pilier[,3]<-as.data.frame(w_Pilier)
    mat_joueur_Pilier[is.na(mat_joueur_Pilier)] <- FALSE
    
    for (i in 1:length(x_Pilier)){
      if(mat_joueur_Pilier[i,2]=="FALSE"&mat_joueur_Pilier[i,3]=="FALSE"){
        mat_joueur_Pilier[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Pilier[i,2]=="TRUE"&mat_joueur_Pilier[i,3]=="FALSE") {
        mat_joueur_Pilier[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Pilier[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_Pilier<-
      
      
      renderTable(
        mat_joueur_Pilier[,c(1,4)],colnames=FALSE
      )
    
    output$Pilier<-renderInfoBox({
      infoBox(
        "Pilier", paste0(length(mat_joueur_Pilier[,1][mat_joueur_Pilier[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Pilier[,1][mat_joueur_Pilier[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Pilier[,1][mat_joueur_Pilier[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    #POur les 1/2 d'ouverture
    x_Ouverture<-x[,1][x[,2]==input$results&x[,3]=="1/2 Ouverture"]
    z_Ouverture<-(x_Ouverture%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="1/2 Ouverture"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
                  &(x[,12][x[,2]==input$results&x[,3]=="1/2 Ouverture"]=="R0"#joueurs blessés dont le stade blesse = R0
                    |x[,12][x[,2]==input$results&x[,3]=="1/2 Ouverture"]=="R1"# | = ET joueurs blessés dont le stade = R1
                    |x[,12][x[,2]==input$results&x[,3]=="1/2 Ouverture"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Ouverture<-(x_Ouverture%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="1/2 Ouverture"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
                  &(x[,12][x[,2]==input$results&x[,3]=="1/2 Ouverture"]=="RA"#joueurs blessés dont le stade blesse = R0
                    |x[,12][x[,2]==input$results&x[,3]=="1/2 Ouverture"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Ouverture<-as.data.frame(matrix(ncol=4,nrow=length(x_Ouverture)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Ouverture[,1]<-as.data.frame(x_Ouverture)
    mat_joueur_Ouverture[,2]<-as.data.frame(z_Ouverture)
    mat_joueur_Ouverture[,3]<-as.data.frame(w_Ouverture)
    mat_joueur_Ouverture[is.na(mat_joueur_Ouverture)] <- FALSE
    
    for (i in 1:length(x_Ouverture)){
      if(mat_joueur_Ouverture[i,2]=="FALSE"&mat_joueur_Ouverture[i,3]=="FALSE"){
        mat_joueur_Ouverture[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Ouverture[i,2]=="TRUE"&mat_joueur_Ouverture[i,3]=="FALSE") {
        mat_joueur_Ouverture[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Ouverture[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_Ouverture<-
      
      
      renderTable(
        mat_joueur_Ouverture[,c(1,4)],colnames=FALSE
      )
    
    output$Ouverture<-renderInfoBox({
      infoBox(
        "Ouverture", paste0(length(mat_joueur_Ouverture[,1][mat_joueur_Ouverture[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Ouverture[,1][mat_joueur_Ouverture[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Ouverture[,1][mat_joueur_Ouverture[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    
    
    
    
    #Pour les ailiers /Arriere   
    x_Ailier<-x[,1][x[,2]==input$results&x[,3]=="Ailier - Arriere"]
    z_Ailier<-(x_Ailier%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Ailier - Arriere"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Ailier - Arriere"]=="R0"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Ailier - Arriere"]=="R1"# | = ET joueurs blessés dont le stade = R1
                 |x[,12][x[,2]==input$results&x[,3]=="Ailier - Arriere"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Ailier<-(x_Ailier%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Ailier - Arriere"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Ailier - Arriere"]=="RA"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Ailier - Arriere"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Ailier<-as.data.frame(matrix(ncol=4,nrow=length(x_Ailier)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Ailier[,1]<-as.data.frame(x_Ailier)
    mat_joueur_Ailier[,2]<-as.data.frame(z_Ailier)
    mat_joueur_Ailier[,3]<-as.data.frame(w_Ailier)
    mat_joueur_Ailier[is.na(mat_joueur_Ailier)] <- FALSE
    
    for (i in 1:length(x_Ailier)){
      if(mat_joueur_Ailier[i,2]=="FALSE"&mat_joueur_Ailier[i,3]=="FALSE"){
        mat_joueur_Ailier[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Ailier[i,2]=="TRUE"&mat_joueur_Ailier[i,3]=="FALSE") {
        mat_joueur_Ailier[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Ailier[i,4]<-"LIMITE"
      }
    }
    
    
    
    output$mat_Ailier<-
      
      
      renderTable(
        mat_joueur_Ailier[,c(1,4)],colnames=FALSE
      )
    
    output$Ailier<-renderInfoBox({
      infoBox(
        "Ailier", paste0(length(mat_joueur_Ailier[,1][mat_joueur_Ailier[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Ailier[,1][mat_joueur_Ailier[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Ailier[,1][mat_joueur_Ailier[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    
    
    
    
    #Pour les 1/2 meles et ouverture
    x_Melee<-x[,1][x[,2]==input$results&x[,3]=="1/2 Melee"]
    z_Melee<-(x_Melee%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="1/2 Melee"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
              &(x[,12][x[,2]==input$results&x[,3]=="1/2 Melee"]=="R0"#joueurs blessés dont le stade blesse = R0
                |x[,12][x[,2]==input$results&x[,3]=="1/2 Melee"]=="R1"# | = ET joueurs blessés dont le stade = R1
                |x[,12][x[,2]==input$results&x[,3]=="1/2 Melee"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Melee<-(x_Melee%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="1/2 Melee"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
              &(x[,12][x[,2]==input$results&x[,3]=="1/2 Melee"]=="RA"#joueurs blessés dont le stade blesse = R0
                |x[,12][x[,2]==input$results&x[,3]=="1/2 Melee"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Melee<-as.data.frame(matrix(ncol=4,nrow=length(x_Melee)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Melee[,1]<-as.data.frame(x_Melee)
    mat_joueur_Melee[,2]<-as.data.frame(z_Melee)
    mat_joueur_Melee[,3]<-as.data.frame(w_Melee)
    mat_joueur_Melee[is.na(mat_joueur_Melee)] <- FALSE
    
    for (i in 1:length(x_Melee)){
      if(mat_joueur_Melee[i,2]=="FALSE"&mat_joueur_Melee[i,3]=="FALSE"){
        mat_joueur_Melee[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Melee[i,2]=="TRUE"&mat_joueur_Melee[i,3]=="FALSE") {
        mat_joueur_Melee[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Melee[i,4]<-"LIMITE"
      }
    }
    
    output$mat_Melee<-
      
      
      renderTable(
        mat_joueur_Melee[,c(1,4)],colnames=FALSE
      )
    
    output$Melee<-renderInfoBox({
      infoBox(
        "Melee", paste0(length(mat_joueur_Melee[,1][mat_joueur_Melee[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Melee[,1][mat_joueur_Melee[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Melee[,1][mat_joueur_Melee[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    
    
    
    #Pour les talonneurs    
    x_Talonneur<-x[,1][x[,2]==input$results&x[,3]=="Talonneur"]
    z_Talonneur<-(x_Talonneur%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Talonneur"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
                  &(x[,12][x[,2]==input$results&x[,3]=="Talonneur"]=="R0"#joueurs blessés dont le stade blesse = R0
                    |x[,12][x[,2]==input$results&x[,3]=="Talonneur"]=="R1"# | = ET joueurs blessés dont le stade = R1
                    |x[,12][x[,2]==input$results&x[,3]=="Talonneur"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Talonneur<-(x_Talonneur%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Talonneur"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
                  &(x[,12][x[,2]==input$results&x[,3]=="Talonneur"]=="RA"#joueurs blessés dont le stade blesse = R0
                    |x[,12][x[,2]==input$results&x[,3]=="Talonneur"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Talonneur<-as.data.frame(matrix(ncol=4,nrow=length(x_Talonneur)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Talonneur[,1]<-as.data.frame(x_Talonneur)
    mat_joueur_Talonneur[,2]<-as.data.frame(z_Talonneur)
    mat_joueur_Talonneur[,3]<-as.data.frame(w_Talonneur)
    mat_joueur_Talonneur[is.na(mat_joueur_Talonneur)] <- FALSE
    
    for (i in 1:length(x_Talonneur)){
      if(mat_joueur_Talonneur[i,2]=="FALSE"&mat_joueur_Talonneur[i,3]=="FALSE"){
        mat_joueur_Talonneur[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Talonneur[i,2]=="TRUE"&mat_joueur_Talonneur[i,3]=="FALSE") {
        mat_joueur_Talonneur[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Talonneur[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_Talonneur<-
      
      
      renderTable(
        mat_joueur_Talonneur[,c(1,4)],colnames=FALSE
      )
    
    
    output$Talonneur<-renderInfoBox({
      infoBox(
        "Talonneur", paste0(length(mat_joueur_Talonneur[,1][mat_joueur_Talonneur[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Talonneur[,1][mat_joueur_Talonneur[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Talonneur[,1][mat_joueur_Talonneur[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    
    #pour la 3eme Ligne
    x_3L<-x[,1][x[,2]==input$results&x[,3]=="3eme Ligne"]
    z_3L<-(x_3L%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="3eme Ligne"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
           &(x[,12][x[,2]==input$results&x[,3]=="3eme Ligne"]=="R0"#joueurs blessés dont le stade blesse = R0
             |x[,12][x[,2]==input$results&x[,3]=="3eme Ligne"]=="R1"# | = ET joueurs blessés dont le stade = R1
             |x[,12][x[,2]==input$results&x[,3]=="3eme Ligne"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_3L<-(x_3L%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="3eme Ligne"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
           &(x[,12][x[,2]==input$results&x[,3]=="3eme Ligne"]=="RA"#joueurs blessés dont le stade blesse = R0
             |x[,12][x[,2]==input$results&x[,3]=="3eme Ligne"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_3L<-as.data.frame(matrix(ncol=4,nrow=length(x_3L)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_3L[,1]<-as.data.frame(x_3L)
    mat_joueur_3L[,2]<-as.data.frame(z_3L)
    mat_joueur_3L[,3]<-as.data.frame(w_3L)
    mat_joueur_3L[is.na(mat_joueur_3L)] <- FALSE
    
    for (i in 1:length(x_3L)){
      if(mat_joueur_3L[i,2]=="FALSE"&mat_joueur_3L[i,3]=="FALSE"){
        mat_joueur_3L[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_3L[i,2]=="TRUE"&mat_joueur_3L[i,3]=="FALSE") {
        mat_joueur_3L[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_3L[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_3L<-
      
      
      renderTable(
        mat_joueur_3L[,c(1,4)],colnames=FALSE
      )
    
    output$TroisiemeL<-renderInfoBox({
      infoBox(
        "3eme Ligne", paste0(length(mat_joueur_3L[,1][mat_joueur_3L[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_3L[,1][mat_joueur_3L[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_3L[,1][mat_joueur_3L[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    #Pour les centres    
    x_Centre<-x[,1][x[,2]==input$results&x[,3]=="Centre"]
    z_Centre<-(x_Centre%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Centre"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Centre"]=="R0"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Centre"]=="R1"# | = ET joueurs blessés dont le stade = R1
                 |x[,12][x[,2]==input$results&x[,3]=="Centre"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_Centre<-(x_Centre%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="Centre"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
               &(x[,12][x[,2]==input$results&x[,3]=="Centre"]=="RA"#joueurs blessés dont le stade blesse = R0
                 |x[,12][x[,2]==input$results&x[,3]=="Centre"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_Centre<-as.data.frame(matrix(ncol=4,nrow=length(x_Centre)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_Centre[,1]<-as.data.frame(x_Centre)
    mat_joueur_Centre[,2]<-as.data.frame(z_Centre)
    mat_joueur_Centre[,3]<-as.data.frame(w_Centre)
    mat_joueur_Centre[is.na(mat_joueur_Centre)] <- FALSE
    
    for (i in 1:length(x_Centre)){
      if(mat_joueur_Centre[i,2]=="FALSE"&mat_joueur_Centre[i,3]=="FALSE"){
        mat_joueur_Centre[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_Centre[i,2]=="TRUE"&mat_joueur_Centre[i,3]=="FALSE") {
        mat_joueur_Centre[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_Centre[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_Centre<-
      
      
      renderTable(
        mat_joueur_Centre[,c(1,4)],colnames=FALSE
      )
    
    
    output$Centre<-renderInfoBox({
      infoBox(
        "Centre", paste0(length(mat_joueur_Centre[,1][mat_joueur_Centre[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_Centre[,1][mat_joueur_Centre[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_Centre[,1][mat_joueur_Centre[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
    
    
    
    # Pour la seconde Ligne
    x_2L<-x[,1][x[,2]==input$results&x[,3]=="2eme Ligne"]
    z_2L<-(x_2L%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="2eme Ligne"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
           &(x[,12][x[,2]==input$results&x[,3]=="2eme Ligne"]=="R0"#joueurs blessés dont le stade blesse = R0
             |x[,12][x[,2]==input$results&x[,3]=="2eme Ligne"]=="R1"# | = ET joueurs blessés dont le stade = R1
             |x[,12][x[,2]==input$results&x[,3]=="2eme Ligne"]=="R2"))# | = ET joueurs blessés dont le stade = R2
    w_2L<-(x_2L%in%(x[,1][x[,1]%in%(x[,1][x[,2]==input$results&x[,3]=="2eme Ligne"])])#permet de savoir les joueurs qui sont dans equipe et liste de blessé
           &(x[,12][x[,2]==input$results&x[,3]=="2eme Ligne"]=="RA"#joueurs blessés dont le stade blesse = R0
             |x[,12][x[,2]==input$results&x[,3]=="2eme Ligne"]=="R3"))# | = ET joueurs blessés dont le stade = R2
    #Matrice pour contenir les résultats de la selection (joueur + etat de sante)
    mat_joueur_2L<-as.data.frame(matrix(ncol=4,nrow=length(x_2L)))
    #Si les joueurs ne sont pas dans la selection alors ils sont prets à joueur
    mat_joueur_2L[,1]<-as.data.frame(x_2L)
    mat_joueur_2L[,2]<-as.data.frame(z_2L)
    mat_joueur_2L[,3]<-as.data.frame(w_2L)
    mat_joueur_2L[is.na(mat_joueur_2L)] <- FALSE
    
    for (i in 1:length(x_2L)){
      if(mat_joueur_2L[i,2]=="FALSE"&mat_joueur_2L[i,3]=="FALSE"){
        mat_joueur_2L[i,4]<-"Joueur disponible"
      }
      else if (mat_joueur_2L[i,2]=="TRUE"&mat_joueur_2L[i,3]=="FALSE") {
        mat_joueur_2L[i,4]<-"ATTENTION RTP"
      }
      else{
        mat_joueur_2L[i,4]<-"LIMITE"
      }
    }
    
    
    output$mat_2L<-
      
      
      renderTable(
        mat_joueur_2L[,c(1,4)],colnames=FALSE
      )
    
    output$SecondeL<-renderInfoBox({
      infoBox(
        "2eme Ligne", paste0(length(mat_joueur_2L[,1][mat_joueur_2L[,4]=="Joueur disponible"])," joueurs OK"), 
        HTML(paste0(length(mat_joueur_2L[,1][mat_joueur_2L[,4]=="LIMITE"])," joueurs limités"),"\n",
             paste0(length(mat_joueur_2L[,1][mat_joueur_2L[,4]=="ATTENTION RTP"])," joueurs blessés")),
        icon = icon("thumbs-down"),
        color = "red"
      )})
    
    
  })
  
  
  
  
}

shinyApp(ui = ui, server = server)

Hi,

Welcome to the RStudio community!

The files you're talking about (I assume raw and raw1), were are they stored relative to the app.R file (same folder?). Or are they to be uploaded? It's weird because your code just says read.xls(file, ...) and no path or name is specified...

Things working locally and not on the server usually imply something wrong with the paths used to find files or the location of the files being outside the shiny folder.

PJ

Also, Could you check what your app's logs say? that would give us a clue about what is going on.

Dear PJ, thank you for your message and taking into consideration my problem. I'm sorry for the mistake. Raw and raw are stored in an .xlsm file which is itself stored in the same folder than app.r.

If I create a folder on my computer (c:) no problem to launch the app. The mistake is just present when the folder is stored in a cloud.

As you suggested, you'll find below the message I have when I launch the app

── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
✔ ggplot2 3.2.1     ✔ purrr   0.3.3
✔ tibble  2.1.3     ✔ dplyr   0.8.3
✔ tidyr   1.0.0     ✔ stringr 1.4.0
✔ readr   1.3.1     ✔ forcats 0.4.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()

Attaching package: ‘shinydashboard’

The following object is masked from ‘package:graphics’:

    box


Attaching package: ‘psych’

The following objects are masked from ‘package:ggplot2’:

    %+%, alpha

Loading required package: spatstat.data
Loading required package: nlme

Attaching package: ‘nlme’

The following object is masked from ‘package:dplyr’:

    collapse

Loading required package: rpart

spatstat 1.58-2       (nickname: ‘Not Even Wrong’) 
For an introduction to spatstat, type ‘beginner’ 


Note: R version 3.5.2 (2018-12-20) is more than 9 months old; we strongly recommend upgrading to the latest version

Attaching package: ‘spatstat’

The following objects are masked from ‘package:psych’:

    reflect, rescale


Attaching package: ‘raster’

The following objects are masked from ‘package:spatstat’:

    area, rotate, shift

The following object is masked from ‘package:nlme’:

    getData

The following object is masked from ‘package:dplyr’:

    select

The following object is masked from ‘package:tidyr’:

    extract

Loading required package: spam
Loading required package: dotCall64
Loading required package: grid
Spam version 2.2-1 (2018-12-20) is loaded.
Type 'help( Spam)' or 'demo( spam)' for a short introduction 
and overview of this package.
Help for individual functions is also obtained by adding the
suffix '.spam' to the function name, e.g. 'help( chol.spam)'.

Attaching package: ‘spam’

The following objects are masked from ‘package:base’:

    backsolve, forwardsolve

Loading required package: maps

Attaching package: ‘maps’

The following object is masked from ‘package:purrr’:

    map

See www.image.ucar.edu/~nychka/Fields for
 a vignette and other supplements. 

Attaching package: ‘fields’

The following object is masked from ‘package:psych’:

    describe

Loading required package: tcltk
Warning: no DISPLAY variable so Tk is not available

Attaching package: ‘tcltk2’

The following objects are masked from ‘package:raster’:

    values, values<-

The following object is masked from ‘package:shiny’:

    tag

gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED.

gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.

Attaching package: ‘gdata’

The following objects are masked from ‘package:raster’:

    resample, trim

The following objects are masked from ‘package:dplyr’:

    combine, first, last

The following object is masked from ‘package:purrr’:

    keep

The following object is masked from ‘package:stats’:

    nobs

The following object is masked from ‘package:utils’:

    object.size

The following object is masked from ‘package:base’:

    startsWith

Unable to open file 'FCG Fichier Médical_Fevrier_2020.xlsm'.
Warning in system(cmd, intern = !verbose) :
  running command ''/usr/bin/perl' '/opt/R/3.5.2/lib/R/library/gdata/perl/xls2csv.pl'  'FCG Fichier Médical_Fevrier_2020.xlsm' '/tmp/RtmpeWW7AV/file1a3bbc586f.csv' 'Equipe'' had status 2
Error in value[[3L]](cond) : invalid 'file' argument
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted

And is your actual code different from the code that you shared, insofar as it does define the file variable that you use ?

Sorry my mistake, the code at the beggining is the Following. The file "FGC Fichier Médical_Fevrier_2020 is stored in the same folder than the app.r

#####   lecture du fichier sous R   ######
raw<-read.xls("FCG Fichier Médical_Fevrier_2020.xlsm",sheet="Equipe", header = TRUE,skip=0)

attach(raw)#permet de travailler sur le fichier "raw"
raw1<-read.xls("FCG Fichier Médical_Fevrier_2020.xlsm",sheet="Reca", header = TRUE,skip=0)
raw1<-subset(raw1,raw1[,12]=="R0"|raw1[,12]=="R1"|raw1[,12]=="R2"|raw1[,12]=="R3"|raw1[,12]=="RA")


x<-left_join(raw,raw1)
1 Like

It is possible that the non-ASCII characters in the file name are causing the issue, I recommend you to rename your file avoiding non-ASCII characters and empty spaces.

1 Like

Thank you all, I solved this problem with your help. First it was a problem coming from ASCII characters. Secondly, the problem stem from the package "gdata". I had to open my xlsm file with readxl or openxlsx.

Now I have another problem, maybe another question. When I update (for example if I add a player) my .xlsm file, it does not change the results of my app.

I have to check if this problem has already been solved

Once again, thank you for your help!

Hi,

Great to hear you solved the issue. Please make sure to select the post that provided the solution and mark it as such

If you have a new issue, it's best to start a new topic as to ensure that there is one solution per probelm per post.

PJ

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.