在R光泽

时间:2018-01-30 11:03:20

标签: r filter shiny visualization

我有这个问题。我开始学习闪亮,我无法弄清楚如何在从另一个闪亮选择器派生的数据集上使用过滤器。 在这种特殊情况下,我希望有一个过滤器适用于第一步选择的任何数据集 我想根据C列过滤数据集,特别是我想只想象C> 1的行。 1.

我会报告代码:

library(shiny)

set.seed(1)
rock <- data.frame(unif = runif(100, -1, 1),
                   norm = rnorm(100, 0, 2),
                   pois = rpois(100, 1))
paper <- data.frame(unif = runif(100, -2, 2),
                    norm = rnorm(100, 0, 4),
                    pois = rpois(100, 2))
scissor <- data.frame(unif = runif(100, -3, 3),
                      norm = rnorm(100, 0, 6),
                      pois = rpois(100, 3))


# Define UI for dataset viewer application
ui <- shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Shiny Text"),

  # Sidebar with controls to select a dataset and specify the number
  # of observations to view
  sidebarPanel(
    selectInput("dataset", "Choose a dataset:", 
                choices = c("rock", "paper", "scissor")),

    sliderInput("range", "Range:",
               min = 0, max = 10,
               value = c(0.5,5)),

    numericInput("obs", "Number of observations to view:", 20)
  ),

  # Show an HTML table with the requested
  # number of observations
  mainPanel(

    tableOutput("view")
  )
))

# Define server logic required to summarize and view the selected dataset
server <- shinyServer(function(input, output) {

  # Return the requested dataset
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "paper" = paper,
           "scissor" = scissor)
  })

  #Creating a data frame based on inputs

  ####?????####

  # Show the first "n" observations
  output$view <- renderTable({
    head(datasetInput(), n = input$obs)
  })
})


shinyApp(ui = ui, server = server)

我的问题是在服务器部分代替#### ????? ####。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

这样的东西?

library(shiny)

set.seed(1)
rock <- data.frame(unif = runif(100, -1, 1),
                   norm = rnorm(100, 0, 2),
                   pois = rpois(100, 1))
paper <- data.frame(unif = runif(100, -2, 2),
                    norm = rnorm(100, 0, 4),
                    pois = rpois(100, 2))
scissor <- data.frame(unif = runif(100, -3, 3),
                      norm = rnorm(100, 0, 6),
                      pois = rpois(100, 3))


# Define UI for dataset viewer application
ui <- shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Shiny Text"),

  # Sidebar with controls to select a dataset and specify the number
  # of observations to view
  sidebarPanel(
    selectInput("dataset", "Choose a dataset:", 
                choices = c("rock", "paper", "scissor")),

    sliderInput("range", "Range:",
                min = 0, max = 10,
                value = c(0.5,5)),

    numericInput("obs", "Number of observations to view:", 20)
  ),

  # Show an HTML table with the requested
  # number of observations
  mainPanel(

    tableOutput("view")
  )
))

# Define server logic required to summarize and view the selected dataset
server <- shinyServer(function(input, output) {

  # Return the requested dataset
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "paper" = paper,
           "scissor" = scissor)
  })

  #Creating a data frame based on inputs

  seconddata <- reactive({
    d <- datasetInput()
    d[d[,3] >= input$range[1] & d[,3] <= input$range[2],]
  })

  ####?????####

  # Show the first "n" observations
  output$view <- renderTable({
    head(seconddata(), n = input$obs)
  })
})


shinyApp(ui = ui, server = server)