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

时间:2015-01-29 04:50:52

标签: r shiny rstudio

我想知道为什么会出现这个问题以及是否有解决方法。我在下面创建了以下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查询返回一个带有1个变量和118个观察值的data.frame对象。所有这些观察都只是文本。执行
   class(CompanyNames$Companynm)
提供因子类型

1 个答案:

答案 0 :(得分:4)

由于您的示例不是reproducible,我猜测class(CompanyNames$Companynm)是“因素”而不是“字符”。在因子上使用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))
})