2017-04-17 27 views
-1

我在Rstudio的Shiny包中編寫了一個表單。但我想使用我的數據框的信息創建一個自動填充表單。我會舉一個小例子。如何使用數據框信息自動填充閃亮的R表單中的字段?

讓我們假設我有一個三列數據框。第一個包含我的學生的姓名,第二個包含他的年齡,第三個包含他過去考試的最後一個等級。我創建了一個具有三個選擇輸入字段的表單。第一個用於選擇姓名,第二個用於選擇年齡的輸入號碼以及用於選擇最後一個成績的最後一個號碼。我想要在第一個字段中選擇學生的姓名時,其他字段將自動填寫信息。

謝謝!

回答

0

我想這是你在找什麼:

我使用的數據集如下。我從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()) 
) 

}) 
+0

感謝完美的答案。真的解決了這個問題。 –

+0

@ElvinMitchellToro,如果此答案有助於解決您的問題,請使用投票箭頭下的複選標記考慮[標記爲已接受](https://stackoverflow.com/help/someone-answers)。 – krish

相關問題