我正在开发一个 RShiny 应用程序,使用 DTedit 包创建可编辑的数据表。目标是允许用户映射两个不同数据框中的列。但是,在 DTedit 表中使用 selectInput 时,选择输入显示空白选项。我已经验证数据和列名称是正确的。谁能帮我诊断问题并获取选择输入以显示预期的选择?
library(shiny)
library(bslib)
library(DT)
library(DTedit)
MAPPING_TABLE <- list(
'Standard Column 1' = list('Type'='Character'),
'Standard Column 2' = list('Type'='Character'),
'Standard Column 3' = list('Type'='Character')
)
format_default_mapping_table <- function(fields_list) {
data.frame(
'Standard Field' = names(fields_list),
'Type' = unname(unlist(lapply(fields_list, function(field) field$Type))),
'PY Field' = c(''),
'CY Field' = c(''),
check.names=FALSE
)
}
ui <- navbarPage(
title = 'Mapping Tool',
theme = bs_theme(version=5, bootswatch='cosmo'),
position = 'static-top',
fluid = TRUE,
tabPanel(
'Home',
fluidPage(
fluidRow(
column(width=4, uiOutput('mapping_table_explanation'), uiOutput('mapping_table_button')),
column(width=8, uiOutput('Mapping_Table'))
)
)
)
)
server <- function(input, output, session) {
data_dir <- reactiveValues(
data=list(
'PY Data'=data.frame('col1a'=1:10, 'col2a'=11:20, 'col3a'=21:30),
'CY Data'=data.frame('col1b'=1:10, 'col2b'=11:20, 'col3b'=21:30)
)
)
output$mapping_table_explanation <- renderUI({
fluidRow(
h3(tags$b('3. Field Mapping')),
p(
paste(rep('Explanation goes here.', 20), collapse=' '),
style = 'display: inline; text-align: justify;'
)
)
})
output$mapping_table_button <- renderUI({actionButton('confirm_mapping', 'Confirm Mapping?', width='100%')})
Mapping_Table_Results <- dtedit(
input, output,
name = 'Mapping_Table',
thedata = format_default_mapping_table(MAPPING_TABLE),
edit.cols = c('PY Field', 'CY Field'),
show.copy = FALSE,
input.types = list(
'PY Field' = 'selectInput',
'CY Field' = 'selectInput'
),
input.choices = list(
'PY Field' = names(data_dir$data[['PY Data']]),
'CY Field' = names(data_dir$data[['CY Data']])
)
)
}
shinyApp(ui, server)