我有一个手动创建的selectInput
菜单:
selectInput(inputId = "group_by",
label = "Grouping Options:",
choices = c("Product" = "PRODUCT_NAME",
"Capacity" = "PRODUCT_CAPACITY",
"Month" = "CALENDAR_MONTH",
"Line of Business" = "LOB")
)
我想简化此操作,因此不必每次更改选项时都进行编辑。
我已经有2个列表,对于该应用程序,我希望只能编辑这些列表,并让应用程序的其余部分根据这些列表生成所需的内容。
两个列表是:
column_names <- c('PRODUCT_NAME', 'PRODUCT_CAPACITY',
'CALENDAR_MONTH', 'LOB')
aliases <- c('Product', 'Capacity', 'Date', 'Line of Business')
我想将此代码块更改为更具适应性的块,利用向量aliases
和向量column_names
来创建选择列表,而不是:
c("Product" = "PRODUCT_NAME",
"Capacity" = "PRODUCT_CAPACITY",
"Month" = "CALENDAR_MONTH",
"Line of Business" = "LOB")
我认为我可以使用lapply或sapply,但是我对它们的使用不是很坚强,我确实需要使用aliases = column_name
,因此菜单显示“ nice”名称(aliases
),而且知道在数据(column_names
)中的哪里找到
欢迎提出任何建议。谢谢!
答案 0 :(得分:2)
您可以使用column_names
为aliases
向量提供名称,
names(column_names) <- aliases
column_names
# Product Capacity Date Line of Business
# "PRODUCT_NAME" "PRODUCT_CAPACITY" "CALENDAR_MONTH" "LOB"
以上值类似于键值表示。您可以将其验证为:
v <- c("Product" = "PRODUCT_NAME",
"Capacity" = "PRODUCT_CAPACITY",
"Date" = "CALENDAR_MONTH",
"Line of Business" = "LOB")
v
# Product Capacity Date Line of Business
# "PRODUCT_NAME" "PRODUCT_CAPACITY" "CALENDAR_MONTH" "LOB"
identical(column_names,v)
#[1] TRUE
答案 1 :(得分:1)
如果顺序始终相同,则只需将别名放入selectInput
selectInput(inputId = "group_by",
label = "Grouping Options:",
choices = aliases)
然后,每次需要列名时,只需获取与选择相对应的索引
column_names[which(aliases == input$group_by)]