是否可以通过读取selectInput来为data.frame创建一个列表?
据我所知,一种方法是使用selectInput的选项在server.R中子集data.frame,而不是反过来。
我不能做一个预先制定的清单,因为我不知道有多少选择。所以我的应用程序应该:
selectInput Read data.frame,获取对竞选专栏的独特观察,并将其放入列表中,在中使用该列表
代码:
library(shiny)
library(tidyverse)
shinyApp(
ui = fluidPage(
selectInput("state", "Choose a state:",
list(`East Coast` = c("NY", "NJ", "CT"),
`West Coast` = c("WA", "OR", "CA"),
`Midwest` = c("MN", "WI", "IA"))
),
textOutput("result")
),
server = function(input, output) {
fb <- reactive({
fb_data <- read_csv("https://www.dropbox.com/s/ry6gfksljbpg1d6/curacao-fb-julago.csv?dl=1", skip = 0)
})
lst_campaigns <- unique(fb()$campaign)
lst_campaigns
}
)有关selectInput信息的链接:
https://shiny.rstudio.com/reference/shiny/latest/selectInput.html
发布于 2018-09-13 04:39:34
是的,updateSelectInput做那个工作。
在下面的示例中,单击update按钮将调用读取dropbox文件并更新活动列表。请注意,我只传递了前十次战役的选择,因为第11项会导致错误(可能有一个不合法的字符,闪亮无法处理)。
library(shiny)
library(tidyverse)
shinyApp(
ui = fluidPage(
selectInput("state", "Choose a state:",
list(`East Coast` = c("NY", "NJ", "CT"),
`West Coast` = c("WA", "OR", "CA"),
`Midwest` = c("MN", "WI", "IA"))),
actionButton("update", "Update"),
textOutput("result")
),
server = function(input, output, session) {
fb <- reactive({
fb_data <- read_csv("https://www.dropbox.com/s/ry6gfksljbpg1d6/curacao-fb-julago.csv?dl=1", skip = 0)
fb_data
})
observeEvent(input$update, {
dat = fb()
lst_campaigns <- unique(dat$campaign)
updateSelectInput(session, "state",
choices=head(lst_campaigns, 10),
selected=lst_campaigns[1])
})
}
)server用于自动启动。
server = function(input, output, session) {
fb_data <- read_csv("https://www.dropbox.com/s/ry6gfksljbpg1d6/curacao-fb-julago.csv?dl=1", skip = 0)
lst_campaigns <- unique(fb_data$campaign)
updateSelectInput(session, "state",
choices=head(lst_campaigns, 10),
selected=lst_campaigns[1])
}发布于 2018-09-13 13:06:01
您可以通过使用updateSelectInput和observe函数实现这一点,如下所示:
library(shiny)
ui <- fluidPage(
selectInput("species", "Select a specie:", choices = NULL)
)
server <- function(input, output, session) {
data <- reactive({
iris
})
observe({
# Dont run unless a data have been imported
req(data())
unique_obs <- levels(data()[, 'Species'])
updateSelectInput(session = session, "species", choices = unique_obs)
})
}
shinyApp(ui, server) https://stackoverflow.com/questions/52306423
复制相似问题