我在Shiny R中有一个应用程序。 在用户界面上。R 我读了一个文本输入,在全局。R 我使用 sqldf(( 处理查询。
如何读取 ui 的文本输入。R in Global.R ?
用户界面。R
shinyUI(fluidPage(
#books <<- list("Descritores FOUSP" = "descritor"),
# Application title
titlePanel("CRAI"),
headerPanel(title="Pesquisa de Descritores"),
sidebarLayout(
sidebarPanel(
h5('Qual é o tema da sua pesquisa ?'),
textInput("descritor", "Digite um descritor",""),
submitButton('Pesquisar')
)
)
这个文本输入名称为"描述者",我想在全局查询中使用。R
我试过这个:
output$desc <- renderText({
paste(input$descritor)})
sql <- sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
但我无法在global.R上阅读"描述者"。
文件全局。R 不是 Shiny 应用的反应式部分的一部分。只有在用户界面和服务器函数中定义的组件才能用作响应式表达式。全球一切。R 在应用程序启动时执行一次,但不再执行。
因此,如果你想执行你的sql语句,你需要在你的服务器中完成以下操作:
sql <- reactive({
sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
})
mydata <- reactive({
someSQLfunction(sql())
})
通过使您的SQL语句成为响应式表达式(函数reactive()
这样做(,它将在每次更新output$desc
时更新。此响应式表达式的行为类似于函数(!因此,下一条语句中的调用sql()
将返回更新的 SQL 语句。然后,您可以使用您选择的函数(我称之为someSQLfunction
(来处理语句。
你希望此语句的结果也成为反应式表达式,以便可以使用它来创建应用的相关输出。