我正在尝试使用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")
答案 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)
})