2013-10-09 132 views
2

在這裏,我將新列添加到我的數據框。
下面的代碼運行良好。添加新列後,「變量名」和「公式」中的文本應該爲空。提交後明文輸入

你能幫我嗎。

ui.R

library(shiny) 
shinyUI(pageWithSidebar(
    headerPanel("", ""), 
    sidebarPanel(

    wellPanel(

     fileInput('file', 'Select csv file', accept=c('text/csv')), 

     checkboxInput('header', 'Header', TRUE), 

     gsub("label class=\"radio\"", "label class=\"radio inline\"", 
      radioButtons('sep', 'Separator', c(Comma=',', Semicolon=';', Tab='\t'))) 

    ), 

    wellPanel(
     checkboxInput('addcol', 'Create New Variable', FALSE), 

     conditionalPanel(condition="input.addcol!=0", 
         textInput('newvar', "Variable name",""), 
         textInput('newformula', "Formula",""), 
         actionButton("addvar","Apply"))  
    ) 
    ), 

    mainPanel(
    tabsetPanel(
     tabPanel(tableOutput('contents')) 
    ) 
) 

)) 

server.R

library(shiny) 
shinyServer(function(input,output,session){ 

    dataset = reactive({ 
    inFile<-input$file 
    if(is.null(inFile)) 
     return(NULL) 
    read.csv(inFile$datapath, header=input$header, sep=input$sep) 
    }) 


    alterdata = reactive({ 
    if(input$addcol!=0&&input$addvar!=0){ 
     isolate({ 
     df<-dataset() 
     df$Var1<-eval(parse(text=input$newformula), df) 
     df<-rename(df, c(Var1=input$newvar)) 
     df 
     }) 
    } 
    else 
    { 
     dataset() 
    } 
    }) 

    output$contents<-renderTable({ 
    if (is.null(input$file)) { return() }        
    alterdata() 
    }) 

}) 

回答

2

你可以通過使用updateTextInput().這裏的help on that function

下面是更新server.R將是什麼樣子:

修改Server.R

注意,兩行已被添加到alterdata()反應性官能團。

library(shiny) 
library(plyr) 
shinyServer(function(input,output,session){ 

    dataset = reactive({ 
    inFile<-input$file 
    if(is.null(inFile)) 
     return(NULL) 
    read.csv(inFile$datapath, header=input$header, sep=input$sep) 
    }) 


    alterdata = reactive({ 
    if(input$addcol!=0&&input$addvar!=0){ 
     isolate({ 
     df<-dataset() 
     df$Var1<-eval(parse(text=input$newformula), df) 
     df<-rename(df, c(Var1=input$newvar)) 

     #add these two lines 
     updateTextInput(session, "newvar", value = " ")  
     updateTextInput(session, "newformula", value = " ")  

     df   
     }) 
    } 
    else 
    { 
     dataset() 
    } 
    }) 


    output$contents<-renderTable({ 
    if (is.null(input$file)) { return() }        
    alterdata()  
    }) 

}) 

注意,我必須包括plyr使rename可以調用。

+0

謝謝...它的工作。您添加了clearText反應函數,我認爲這不是必需的。而且我還加入了重塑而不是plyr,它正在工作.. – Punith