如何在 ui.R 中读取 TextInput,在 global.R 中使用此值处理查询并使用 Shiny 在 server.R 中显示
How to read a TextInput in ui.R, process a query with this value in global.R and show in server.R using Shiny
我在 Shiny R 中有一个应用程序。在 ui.R 我读了一个文本输入,在 global.R我使用 sqldf().
处理查询
如何在 Global.R 中读取 ui.R 的文本输入?
ui.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')
)
)
这个名为 "descritor" 的文本输入,我想在 global.R
的查询中使用
我试过这个:
output$desc <- renderText({
paste(input$descritor)})
sql <- sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
但我无法在 global.R 上阅读 "descritor"。
文件 global.R 不是 Shiny 应用程序的反应部分的一部分。只有在用户界面和服务器函数中定义的组件才能用作反应式表达式。 global.R 中的所有内容都在应用程序启动时执行一次,但之后不会再执行。
因此,如果您想执行 sql 语句,您的服务器中需要以下内容:
sql <- reactive({
sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
})
mydata <- reactive({
someSQLfunction(sql())
})
通过使您的 SQL 语句成为反应式表达式(函数 reactive()
这样做),它将在 output$desc
的每次更新时更新。这个反应式表达式的行为就像一个函数(!)。因此在下一个语句中调用 sql()
将 return 更新后的 SQL 语句。然后您可以使用您选择的函数(我称之为 someSQLfunction
)来处理语句。
您想使该语句的结果也成为反应式表达式,以便您可以使用它来创建应用的相关输出。
我在 Shiny R 中有一个应用程序。在 ui.R 我读了一个文本输入,在 global.R我使用 sqldf().
处理查询如何在 Global.R 中读取 ui.R 的文本输入?
ui.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')
)
)
这个名为 "descritor" 的文本输入,我想在 global.R
的查询中使用我试过这个:
output$desc <- renderText({
paste(input$descritor)})
sql <- sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
但我无法在 global.R 上阅读 "descritor"。
文件 global.R 不是 Shiny 应用程序的反应部分的一部分。只有在用户界面和服务器函数中定义的组件才能用作反应式表达式。 global.R 中的所有内容都在应用程序启动时执行一次,但之后不会再执行。
因此,如果您想执行 sql 语句,您的服务器中需要以下内容:
sql <- reactive({
sprintf("SELECT * FROM csv WHERE Assuntos = '%s'", output$desc)
})
mydata <- reactive({
someSQLfunction(sql())
})
通过使您的 SQL 语句成为反应式表达式(函数 reactive()
这样做),它将在 output$desc
的每次更新时更新。这个反应式表达式的行为就像一个函数(!)。因此在下一个语句中调用 sql()
将 return 更新后的 SQL 语句。然后您可以使用您选择的函数(我称之为 someSQLfunction
)来处理语句。
您想使该语句的结果也成为反应式表达式,以便您可以使用它来创建应用的相关输出。