【发布时间】:2017-03-02 01:04:12
【问题描述】:
我正在尝试使用 ui.R 中 server.R 的 values$df 数据框变量将数据框的所有字段名称显示为侧面板中的复选框。但我收到一条错误消息,提示 错误:找不到对象“值”。
这是我在 server.R 文件中的内容:
values<- reactiveValues()
values$df<- data.frame() # creates an empty dataframe
# actionButton
mdf<- eventReactive(input$click_counter, {
name<- input$name
gender<- input$gender
college<- input$college
team<- input$team
score<- input$score
new_row<- data.frame(name,college,gender,team,score)
return(new_row)
})
observeEvent(input$click_counter, {
name<- input$name
gender<- input$gender
college<- input$college
team<- input$team
score<- as.numeric(input$score) # convert to numeric here to make sorting possible
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),]
values$df$rank<- 1:nrow(values$df)
})
output$nText<- renderDataTable({
mdf()
})
output$nText2<- renderDataTable({
values$df
}, options = list(orderClasses = TRUE,lengthMenu = c(5, 10, 30), pageLength = 5))
这就是我在 ui.R 文件中的内容:
sidebarLayout(
sidebarPanel(
checkboxGroupInput('nText2',
'Columns in players to show:',
names(values$df),
selected = names(values$df))
),
【问题讨论】:
-
你没有在你的代码中初始化
values,所以它不能运行rbind(values$df, new_row) -
我还建议您使用
renderUI()将checkboxGroupInput()移动到服务器端,然后在用户界面中调用htmlOutput("nText2")。这将允许 UI 依赖于服务器端操作的结果。在 UI 中从服务器调用响应值values$df通常不是 UI 与服务器交互的方式。 -
您正在尝试访问在反应函数之外定义的
values。在 UI 端尝试isolate(values$df)