闪亮的 selectInput 产生一个数字列表

Shiny selectInput produces a list of numbers

我想知道为什么会出现这个问题,是否有解决办法。我在下面创建以下 sql 查询:

 CompanyNames<-sqlQuery(connection, 
                  paste("SELECT Companynm",
                        " FROM RiskMgm_Company",
                        " WHERE CompanyID = ParentID",
                        " ORDER BY Companynm"))

CompanyNames 以数据库的形式出现。现在,无论我如何尝试或以何种方式转换它,下面的 selectInput 都会为我提供从 1 到 118 的列表,而不是公司名称......知道为什么以及如何修复吗?

output$CompNameSelector <- renderUI({
selectInput("compName","Company Name:",c(CompanyNames$Companynm))
})

谢谢!

SQL 查询 returns 一个 data.frame 具有 1 个变量和 118 个观测值的对象。所有这些观察都只是文本。表演
class(CompanyNames$Companynm)
提供一个因子类型

由于您的示例不是 reproducible,我猜测 class(CompanyNames$Companynm) 是 "factor" 而不是 "character"。当您对一个因子使用 c() 时,它会去除所有用于水平的信息并将其转换为简单的数字列。例如

x<-data.frame(a=c("apple","banana","pear"))
x$a 
# [1] apple  banana pear  
# Levels: apple banana pear
c(x$a)
# [1] 1 2 3

所以不要在不必要的情况下使用 c()。那应该只用于连接向量。为了安全起见,将因子转换为字符值

output$CompNameSelector <- renderUI({
    selectInput("compName","Company Name:",
        as.character(CompanyNames$Companynm))
})