首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从selecInput data.frame生成data.frame列表

从selecInput data.frame生成data.frame列表
EN

Stack Overflow用户
提问于 2018-09-13 03:56:21
回答 2查看 397关注 0票数 0

是否可以通过读取selectInput来为data.frame创建一个列表?

据我所知,一种方法是使用selectInput的选项在server.R中子集data.frame,而不是反过来。

我不能做一个预先制定的清单,因为我不知道有多少选择。所以我的应用程序应该:

selectInput Read data.frame,获取对竞选专栏的独特观察,并将其放入列表中,在中使用该列表

代码:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-13 04:39:34

是的,updateSelectInput做那个工作。

在下面的示例中,单击update按钮将调用读取dropbox文件并更新活动列表。请注意,我只传递了前十次战役的选择,因为第11项会导致错误(可能有一个不合法的字符,闪亮无法处理)。

代码语言:javascript
复制
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用于自动启动。

代码语言:javascript
复制
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])  
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-13 13:06:01

您可以通过使用updateSelectInputobserve函数实现这一点,如下所示:

代码语言:javascript
复制
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) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52306423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档