【问题标题】:How to Auto-Fill the fields in a shiny R form using a data frame info?如何使用数据框信息自动填充闪亮的 R 表单中的字段?
【发布时间】:2017-09-13 09:48:12
【问题描述】:

我正在 Rstudio 的 Shiny 包中编写一个表单。但我想使用我的数据框信息创建一个自动填写表单。我举个小例子。

假设我有一个包含三列的 data.frame。第一个包含我学生的姓名,第二个包含他的年龄,第三个包含他过去考试的最后一个年级。我创建了一个只有三个选择输入字段的表单。第一个选择姓名,第二个输入数字选择年龄,最后一个选择他的最后一个年级。我希望当我在第一个字段中选择学生姓名时,其他字段会自动完成信息。

谢谢!

【问题讨论】:

    标签: r shiny rstudio shiny-server


    【解决方案1】:

    我猜这就是你要找的东西:

    我使用的数据集如下。我从csv 文件中加载了相同的数据。

    autoFillDF <- structure(list(Name = c("ABC", "XYZ", "PQR"), Age = c(30L, 24L, 
    27L), Grade = c("A", "B", "D")), .Names = c("Name", "Age", "Grade"
    ), class = "data.frame", row.names = c(NA, -3L))
    

    ui.R 代码

    shinyUI(fluidPage(
      titlePanel("Auto Fill"),
        sidebarPanel(
          selectizeInput("p1", choices = autoFillDF$Name, selected = NULL, label = 'Name'),
          selectizeInput("p2", choices = NULL, label = 'Age'),
          selectizeInput("p3", choices = NULL, label = 'Grade')
    
        ),
        mainPanel(
          DT::dataTableOutput('table')
        )
      )
    )
    

    server.R 代码

    autoFillDF <- read.csv('..../test.csv', stringsAsFactors = FALSE)
    
    shinyServer(function(input, output, session) {
    
      updateApp <- reactive({
        data <- autoFillDF
        data <- data[data$Name %in% input$p1,]
        updateSelectizeInput(session, 'p2', choices = data$Age, selected = data$Age, server = TRUE)
        updateSelectizeInput(session, 'p3', choices = data$Grade, selected = data$Grade, server = TRUE)
    
        data
      })
    
      output$table <- DT::renderDataTable(
        DT::datatable(updateApp()) 
      )
    
    })
    

    【讨论】:

    • 感谢您的完美回答。真正解决问题。
    • @ElvinMitchellToro,如果此答案有助于解决您的问题,请使用投票箭头下方的复选标记考虑 marking it as accepted
    猜你喜欢
    • 2019-07-29
    • 2020-07-17
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2017-09-27
    相关资源
    最近更新 更多