我想知道为什么会出现这个问题以及是否有解决方法。我在下面创建了以下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)
提供因子类型
答案 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))
})