gpt4 book ai didi

r - 在 Shiny 中,从 react 对象的列中选择唯一值以用作输入选择

转载 作者:行者123 更新时间:2023-12-03 19:23:49 25 4
gpt4 key购买 nike

我正在尝试制作一个 Shiny 的仪表板应用程序,其中下拉菜单中可用的选项是从 react 数据对象的列中检索的。

目前我的代码看起来像这样:


library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(tidyverse)

data <- reactiveFileReader(
intervalMillis = 100000,
NULL,
filePath = 'Data\\data.csv',
readFunc = read.csv,
fileEncoding="UTF-8-BOM"
)

header <- dashboardHeader(title = "test")

sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("plots", tabName = "plots"),
pickerInput('to','To:',
options = list(`actions-box` = TRUE, size = 10), multiple = TRUE,
choices = NULL)
)
)

fluid1 <- fluidRow(
box()
)

body <- dashboardBody(
tabItems(
tabItem(
tabName = 'plots', h2(fluid1)
)
)
)

ui <- dashboardPage(title = 'test', header, sidebar, body, skin='blue')

server <- function(input, output){

choices <- reactive({
data() %>%
select(to) %>%
unique()
})

observe({updatePickerInput('to',choices = choices())})
}

shinyApp(ui = ui, server = server)


以及一些示例数据:
data <- data.frame(from = c('RCD', 'RCD', 'RCR', 'RCD', 'RCS', 'RCR', 'RCR', 'RCS', 'RCO', 'RCS'), 
to = c('RCS', 'RCR', 'RCO', 'RCO', 'RCR', 'RCD', 'RCS', 'RCD', 'RCR', 'RCO'),
n = c(1,2,3,4,5,6,7,8,9,10))

我所期望的是这个 -
choices <- reactive({
data() %>%
select(to) %>%
unique()
})

给我一个 to 中唯一值的列表 data() 的列 react 对象,然后我可以将其传递给 observe({updatePickerInput('to',choices = choices())})
相反,我收到此错误:
Warning: Error in : $ operator is invalid for atomic vectors

我对使用 Shiny 还是很陌生,所以在解决这个问题时遇到了真正的问题。
任何帮助将不胜感激

最佳答案

这经常出现。您可能有一个工作 shiny带有 server 的应用程序缺少 session 的方法范围。但是一旦你使用像 updatePickerInput 这样的方法, updateSelectInput , updateTextInput等,您会遇到错误,因为它要求您通过 session给它。因此,您需要确保包含 session论据你的server功能:

server <- function(session, input, output) {
...
}
session对象在许多情况下都有用,例如在浏览器关闭时执行某些操作、自定义用户界面、更新输入或向 javascript 发送消息。有关详细信息,请参阅 practical answer .
updatePickerInput 的情况下,您实际上是在向 session 客户端网页上的选择器输入发送消息。如果输入存在,则绑定(bind)对象的 receiveMessage方法被调用。 updatePickerInput是一个友好的包装器,用来代替通用的 sendInputMessage .在这种情况下,请尝试包含 session :
updatePickerInput(session, 'to', choices = choices())
关于 session 的有用引用资料目的:
https://shiny.rstudio.com/reference/shiny/latest/session.html

关于r - 在 Shiny 中,从 react 对象的列中选择唯一值以用作输入选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221063/

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