2016-03-07 72 views
1

我編寫了一個閃亮的應用程序。它以csv格式讀取任何輸入數據。我還介紹了一個列選擇器,讓用戶選擇他/她想要分析的列。我的問題是我想讓用戶也擦除缺失的值,但當用戶單擊'擦除錯誤'時,它會再次讀取數據,並且不尊重用戶之前完成的變量選擇。擦除閃亮的缺失值

所以我不知道熱分離操作讀取輸入數據和擦除錯誤值。

在此先感謝!

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

回答

0

你必須原諒我無法閱讀你的評論,所以我可能不完全明白你想要做什麼。也因此我已經把骨架server.R爲指導,而不是一個全功能的例子

您的應用程序每次讀取因爲該行

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

一個的數據沒有提供一個可重複的例子你可以保存數據的方式是使用reactiveValues(),並且只有在按下按鈕時才覆蓋它。

所以server.R你會像

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) 

    }) 

} 
+0

非常感謝!它現在完全有效!直到現在我還沒有聽說過reactive_values()。 –

+0

@ManuelFcoAviles - 沒問題。反應值非常有用。如果這回答你的問題,你應該通過點擊這個答案左上角的'打勾'來回答你的問題 – SymbolixAU

+0

我不能像按鈕那樣按下。它說我沒有足夠的聲譽或類似的東西。 –