gpt4 book ai didi

r - 将 R Shiny react 性 SelectInput 值传递给 selectizeInput

转载 作者:行者123 更新时间:2023-12-01 08:00:54 25 4
gpt4 key购买 nike

My Shiny 应用程序使用来自鸟类 map 集的开放数据,包括按物种分类的纬度/经度坐标。鸟类名称有不同的语言,加上首字母缩写词。

这个想法是用户首先选择语言(或缩写词)。根据选择,Shiny 呈现一个包含独特鸟类名称的 selectizeInput 列表。 Then, when one species is selected, a leaflet map is generated.

我已经完成了几个 Shiny 的应用程序,但这次我错过了一些明显的东西。当应用程序启动时,一切都很好。但是,选择新语言时不会重新呈现 selectizeInput 列表。

所有当前代码和一些示例数据都作为 GitHub Gist https://gist.github.com/tts/924b764e7607db5d0a57

如果有人能指出我的问题,我将不胜感激。

最佳答案

问题是 renderUIbirds react block 都依赖于 input$lan 输入。

如果你在 birds block 中添加 print(input$birds),你会看到它在 renderUI 之前使用了鸟的名字> 有机会更新它们以适应新语言。然后传递给 leaflet 图的 data 是空的。

尝试在 birds 表达式中的 input$lan 周围添加 isolate,使其仅依赖于 input$birds:

birds <- reactive({
if( is.null(input$birds) )
return()
data[data[[isolate(input$lan)]] == input$birds, c("lon", "lat", "color")]
})

当您更改语言时,renderUI 将更改selectize,这将触发input$birds 并更新数据。

除了使用 renderUI,您还可以在 ui.R 中创建 selectizeInput,使用(替换 uiOutput):

selectizeInput(
inputId = "birds",
label = "Select species",
multiple = F,
choices = unique(data[["englanti"]])
)

并在您的 server.R 中,使用以下方式更新它:

observe({
updateSelectizeInput(session, 'birds', choices = unique(data[[input$lan]]))
})

关于r - 将 R Shiny react 性 SelectInput 值传递给 selectizeInput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970358/

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