闪亮的 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))
})
我想知道为什么会出现这个问题,是否有解决办法。我在下面创建以下 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))
})