Effacer les valeurs manquantes en shiny

J’ai codé une application shinye. Il lit toutes les données d’entrée au format csv. J’ai également introduit un sélecteur de colonne pour permettre à l’utilisateur de sélectionner les colonnes qu’il souhaite parsingr. Mon problème est que je veux laisser l’utilisateur effacer également les valeurs manquantes, mais lorsque l’utilisateur clique sur “Effacer les données manquantes”, il lit à nouveau les données et ne respecte pas la sélection de variables effectuée par l’utilisateur.

Donc, je ne sais pas chaud pour séparer les deux opérations lire les données d’entrée et effacer les valeurs manquantes.

Merci d’avance!!

data1<-reactive({ fichero<-input$fichero #Si el fichero que leemos no tiene nada devolvemos un Nulo if (is.null(fichero)) {return()} # Leemos el fichero salida<-read.csv(fichero$datapath, header=input$header, sep=input$sep,quote=input$quote,stringsAsFactors=input$stringAsFactors) # Si marcamos la opción de no missings entonces solo se tienen en cuenta los registros que no tienen ningun NA # if (input$miss==TRUE) {salida<-salida[complete.cases(salida),]} return(salida) }) data<-reactive({ data1f<-data1() salida<-data1f # Si marcamos la opción de no missings entonces solo se tienen en cuenta los registros que no tienen ningun NA if (input$miss==TRUE) {salida<-data1f[complete.cases(data1f),]} return(salida) }) 

    Vous devrez me pardonner de ne pas pouvoir lire vos commentaires, alors je ne comprendrai peut-être pas entièrement ce que vous essayez de faire. Vous n’avez pas non plus fourni d’exemple reproductible, j’ai donc créé un server.R squelette.R comme guide, pas comme un exemple de fonctionnement complet

    Votre application lit les données à chaque fois en raison de cette ligne

     data1f<-data1() ## this is a call to the reactive `data1` function every time `input$miss` is changed 

    Une façon de conserver les données consiste à utiliser reactiveValues() et à ne l'écraser que lorsque vous appuyez sur le bouton.

    Donc, dans server.R vous auriez quelque chose comme

     function(input, output, session) { reactive_values <- reactiveValues() reactive_values$salida_original <- NULL reactive_values$salida_changed <- NULL ## ... ## Observe the button press observe({ if(input$fichero){ isolate({ ## To stop a dependancy on the other inputs$ you are calling salida<-read.csv(fichero$datapath, header=input$header, sep=input$sep, quote=input$quote, stringsAsFactors=input$stringAsFactors) reactive_values$salida_original <- salida reactive_values$salida_changed <- salida }) } }) ## Now we have the data stored in a reactive_value, and can make changes to it as and when required ## without calling the 'read.csv' each time data <- reactive({ salida_original <- reactive_values$salida_original ## the untouched, original data salida_changed <- reactive_values$salida_changed ## the data that gets changed each time if(input$miss) { ## Code to change the data here ## salida <- salida_changed[complete.cases(salida_changed), ] } ## update salida_changed reactive_values$salida_changed <- salida ## update the changed data as and when a change i srequired return(salida) }) }