gpt4 book ai didi

r - 传递 react 数据作为 updateSelectizeInput 的选择

转载 作者:行者123 更新时间:2023-12-02 04:05:01 25 4
gpt4 key购买 nike

我试图将 react 数据传递给 updateSelectizeInput 但出现以下错误:

.getReactiveEnvironment()$currentContext() 中的错误: 如果没有事件的响应式(Reactive)上下文,则不允许进行操作。 (您试图做一些只能从响应式(Reactive)表达式或观察者内部完成的事情。)

我的代码如下:

ui.R

 library(shiny)


ui_panel <-
tabPanel("Text Input Test",
sidebarLayout(
sidebarPanel(


selectizeInput('Organisations', label = "Organisation Search",
choices = NULL, options = list(
placeholder = 'Type the organisation name', maxOptions = 10,
maxItems = 1, searchConjunction = 'and')),
tags$style(type="text/css",
".selectize-input::after{visibility:hidden;};"
),


br(),
selectInput(
inputId="selectData",
label=" ",
choices=c("Universities", "Hospitals")
),

br()
),
mainPanel(
tabsetPanel(

tabPanel("output of Organisation search
details",htmlOutput("orgsearchdetails"))

)
)
))


ui <- shinyUI(navbarPage(" ",ui_panel))

服务器.R

   library(shiny)


shinyServer(
function(input, output, session) {



orgdata <- reactive({if(input$selectData=='Universities'){
orgdata <- read.csv("universities.csv")
}else if (input$selectData=='Hospitals'){
orgdata <- read.csv("hospitals.csv")
}
orgdata
})




updateSelectizeInput(session, 'Organisations', choices =
as.character(unique(
orgdata()$name)), server = TRUE)




output$orgsearchdetails <-renderUI({


})


session$onSessionEnded(function() { dbDisconnect(con) })
})

有没有办法可以将 selectInput 的 react 性传递给 updateSelectizeInput ?

我选择 updateSelectizeInput 而不是响应式(Reactive) selectInput,以避免在应用程序启动时填充该字段。

非常欢迎任何帮助或见解。预先感谢您。

最佳答案

我并不是一个出色的专家,但从我一直在构建的仪表板来看,这就是我要做的。我将创建一个名为 selectedDatareactiveValues 变量。然后在我的 observeEvent 中,我将提取 csv 并更新 selectedData。我选择在应用程序中使用 reactiveValues 的原因是它们可以是有状态的,而不仅仅是总是对某些输入使用react,并且我可以在需要相同信息的应用程序的其他区域中调用它们。至于使用 observeEvent,它很简单,因为您可以将 updateSelectizeInput 包装在观察者中。

shinyServer(
function(input, output, session) {
# init reactiveValues
selectedData <- reactiveValues()

observeEvent(input$selectData, {
if (input$selectData == "Universities") {
selectedData$orgdata <- read.csv("universities.csv")
} else if (input$selectData == "Hospitals") {
selectedData$orgdata <- read.csv("hospitals.csv")
}

updateSelectizeInput(session, "Organisations",
choices = as.character(unique(selectedData$orgdata$name)),
server = TRUE)
})

... # rest of your code

}
)

关于r - 传递 react 数据作为 updateSelectizeInput 的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com