闪亮的R:如何在闪亮的应用程序

时间:2017-03-04 16:12:16

标签: r for-loop shiny

我正在尝试使用for循环来获取数据框值$ df 并创建另一个数据框 df 。在for循环中,我想显示每个团队的平均分数。虽然它在输出$ summa2中为唯一(值$ df $ team)生成反应输出,但它不会为for循环中的内容生成任何输出。当我在最后添加 return(df)时,它只会生成数据帧的第一行,而不是全部。

以下是我在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)
  })

output$summa2 <- renderPrint({
    unique(values$df$team) # this works
    for (team_name in unique(values$df$team)){ #this does NOT work
      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)

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

这就是我在ui.R文件中的内容:

verbatimTextOutput("summa2")

1 个答案:

答案 0 :(得分:1)

我将renderPrint更改为:

output$summa2 <- renderPrint({
  df <- data.frame()
  for (team_name in unique(values$df$team)){ #this does NOT work
    local({
      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)

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