【发布时间】:2018-05-02 15:43:43
【问题描述】:
我有一个接收用户输入的闪亮应用:
input$libraries 是由来自
output$libraries <- renderUI({
checkboxGroupInput(inputId = "libraries",
label = strong("Select the libraries for which you would like to see part counts"),
choiceValues = LibraryIDs$libraryid,
choiceNames = LibraryNames$name,
selected = LibraryIDs$libraryid[1],
inline = T)}})
})
我想从我的 postgreSQL 数据库中进行选择,我设置了一个函数:
get_query <- function(querystring){
# create a connection
# loads the PostgreSQL driver
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "RosettaRelational",
host = "localhost", port = 5432,
user = "postgres", password = rstudioapi::askForPassword("Database password"))
on.exit(dbDisconnect(con))
# check for the existance of tables, must be created in pgAdmin4
#dbExistsTable(con, "libraries")
query <- eval(parse(text = querystring))
return(query)
}
它接受一个字符串并对其进行解析以评估查询
现在当我尝试这样查询数据库时:
Names <- get_query(paste0("con %>% tbl('libraries') %>%
filter(libraryid %in% input$libraries) %>% select(name) %>% collect()"))
我收到错误:找不到对象“输入”。我知道它没有正确解析反应字符向量。我应该如何更改它才能使其正常工作?
我试过了:
Names <- get_query(paste0("con %>% tbl('libraries') %>%
filter(libraryid %in% '",input$libraries,"') %>% select(name) %>% collect()"))
但即使用户选择了多个库,它也只会选择向量中的第一个库。当 input$ 仅是一个字符时,例如当输入是操作按钮而不是复选框时,此方法有效
基本上,如果用户选择 111a、111b、211 和 311a,我需要将 input$libraries 传递到字符串中时看起来像 c('111a,'111b','211','311a'),而不是目前正在传递的“111a”。
【问题讨论】:
标签: r postgresql shiny