如何使用数据框信息自动填充闪亮的 R 表单中的字段?
How to Auto-Fill the fields in a shiny R form using a data frame info?
我正在 Rstudio 的 Shiny 包中编写一个表单。但是我想使用我的数据框的信息创建一个自动填充表单。我举个小例子。
假设我有一个包含三列的 data.frame。第一个包含我学生的名字,第二个包含他的年龄,第三个包含他过去考试的最后成绩。我创建了一个只有三个 select 输入字段的表单。第一个用于 select 姓名,第二个用于 select 年龄的输入数字,最后一个用于 select 他最后的成绩。我希望当我在第一个字段中选择学生姓名时,其他字段会自动完成信息。
谢谢!
我想这就是您要找的:
我使用的数据集如下。我从 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())
)
})
我正在 Rstudio 的 Shiny 包中编写一个表单。但是我想使用我的数据框的信息创建一个自动填充表单。我举个小例子。
假设我有一个包含三列的 data.frame。第一个包含我学生的名字,第二个包含他的年龄,第三个包含他过去考试的最后成绩。我创建了一个只有三个 select 输入字段的表单。第一个用于 select 姓名,第二个用于 select 年龄的输入数字,最后一个用于 select 他最后的成绩。我希望当我在第一个字段中选择学生姓名时,其他字段会自动完成信息。
谢谢!
我想这就是您要找的:
我使用的数据集如下。我从 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())
)
})