【问题标题】:R- Problem to deploy shiny app with a file stored on a serverR-使用存储在服务器上的文件部署闪亮应用程序的问题
【发布时间】:2020-02-10 07:54:14
【问题描述】:

我实际上是使用 Shiny 的新手,我需要您的帮助来解决问题。

我编写了一个在本地工作的代码。但是,当我尝试使用闪亮的应用程序部署应用程序时,它不起作用。我读了很多东西,我部分理解了原因。我需要将文件存储在服务器中,因为很多人都可以修改它。

现在,一种解决方案可能是在加载 UI 和服务器之前下载文件,但我不知道该怎么做。这里是我写的代码。如果有人可以帮助我,那就太好了!

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
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"))
      )
    )
  )) 

#   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)

【问题讨论】:

  • 您好 Romain,当它不起作用时您会收到错误消息吗?可以分享一下吗?
  • 嗨罗曼。感谢您提供请求的错误消息,但您必须修改您的问题,包括这些信息,而不是像您回答那样添加。
  • 顺便根据报错信息,gdata包依赖perl解释器来处理xlsx文件。它必须安装在服务器上。您可以改用不依赖外部工具的 openxlsx 包或 readxl 包

标签: r shinydashboard shinyapps


【解决方案1】:

感谢您的回答,您会在下面找到我从应用程序收到的回复:


── 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

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 2016-12-28
    • 2018-09-26
    • 2014-03-26
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多