首页 文章

R Shiny:如何在ui.R中使用server.R中的数据帧变量

提问于
浏览
0

我正在尝试使用ui.R中server.R的 values$df dataframe变量将数据框的所有字段名称显示为侧面板中的复选框 . 但我收到一个错误说 Error: object 'values' not found .

这是我在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))
  ),

2 回答

  • 0

    我不太确定何时分配 values 对象 . 但是,如果您尚未使用global.R文件,我建议使用一个 . 在其中,您可以分配 values ,该对象将在 server.Rui.R 中可用 . 将global.R放在与其他两个文件相同的文件夹中 .

  • 0

    让服务器呈现UI允许您像继续使用其他服务器端操作一样继续使用数据框 . 如果数据框架没有可重复性,我无法确定这个数据框架是否可行,但我希望这能为您提供良好的推动力 .

    server.R:

    output$nText2ui <- renderUI({checkboxGroupInput('nText2',
                              'Columns in players to show:',
                              names(values$df),
                              selected = names(values$df))
                             })
    

    ui.R:

    sidebarLayout(
      sidebarPanel(
       htmlOutput("nText2ui")
        )
      )
    

相关问题