2017-03-07 169 views
0

我正在构建一个Web应用程序,它从用户获取输入值,使用它创建数据框,并最终使用gvisTable显示它。但是,我正在努力通过动态分数列来排序数据框。闪亮的R:如何使用gvisTable反应性地排序数据框

以下是我在server.R文件:

values<- reactiveValues() 
    values$df<- data.frame() 

    observeEvent(input$click_counter, { 
    name<- input$name 
    gender<- input$gender 
    college<- input$college 
    team<- input$team 
    score<- as.numeric(input$score) 
    rank<- 0 

    new_row<- data.frame(rank,name,college,gender,team,score) 

    values$df<- rbind(values$df, new_row) 
    values$df<- values$df[order(values$df$score,decreasing=TRUE),] 
    values$df$rank<- 1:nrow(values$df) 
    }) 

dff1 <- data.frame() 
    output$summa2 <- renderGvis({ 
    for (team_name in unique(values$df$team)){ 
     rank <- 0 
     team <- team_name 
     score <- format(mean(values$df[values$df$team==team_name,]$score), digits=4) 

     new_row<- data.frame(rank, team, score) 

     dff1 <<- rbind(dff1, new_row) 
     dff1 <<- dff1[order(dff1$score,decreasing=FALSE),] 
     dff1$rank <<- 1:nrow(dff1) 
    } 
    return(gvisTable(dff1)) 
    }) 

回答

0

你的代码是不可复制的,但我猜你需要添加sortColumn选项gvisTable

像这样:

return(gvisTable(dff1, options=list(sortColumn='COLUMN_NUMBER')) 

只需更换为所需的列的 'COLUMN_NUMBER栏'。