我有一个闪亮的应用程序,显示数据从数据库,其中变量被分配代码(例如,"TMAX"最高温度为"gdd";如生长度天数等)。用户将从selectInput中选择他们想要显示的变量,我使用stats::setNames()
为选择向量的元素分配了名称。在应用程序的完整版本中,创建了显示所选变量数据的图形,并且我希望能够使用元素的名称作为绘图的y标签(例如,如果变量是TMAX,那么我希望y轴显示"最大温度")。我分配的名称出现在selectInput下拉列表中,但是当用户实际选择一个选项时,name属性似乎丢失了;当我在选定的输入上调用names()
时,它返回NULL
。
这个小程序显示了问题。(我只是打印和呈现变量的名称,而不是创建一个以名称作为标签的图形。)
library(shiny)
ui <- fluidPage(
selectInput(
'select', 'Select',
choices = stats::setNames(
object = c('var1', 'var2', 'var3'),
nm = c('Variable 1', 'Variable 2', 'Variable 3')
)
),
textOutput('var'),
textOutput('varname')
)
server <- function(input, output, session) {
observeEvent(input$select, {
print(names(input$select))
output$var <- renderText(paste('Variable:', input$select))
output$varname <- renderText(paste('Variable name:', names(input$select)))
})
}
shinyApp(ui, server)
谢谢!
感谢@SmokeyShakers,我做了以下更改(在哈希之间):
library(shiny)
########
vars <- stats::setNames(
object = c('var1', 'var2', 'var3'),
nm = c('Variable 1', 'Variable 2', 'Variable 3')
)
########
ui <- fluidPage(
selectInput(
'select', 'Select',
choices = vars
),
textOutput('var'),
textOutput('varname')
)
server <- function(input, output, session) {
observeEvent(input$select, {
# print(names(input$select))
output$var <- renderText(paste('Variable:', input$select))
output$varname <- renderText(paste('Variable name:',
########
names(vars)[which(vars == input$select)]
########
))
})
}
shinyApp(ui, server)