闪亮的应用程序,刷功能与滑块相结合

时间:2016-11-06 16:58:58

标签: r shiny shinydashboard

我对我的闪亮应用有疑问,这是2级响应。在第一级,用户选择滑块上的值,而不是创建绘图。 该图再次被激活,因为您可以使用画笔选择一部分点,然后在下表中显示。 问题是,基于滑块值计算的选定值未显示。 这是我正在尝试的代码:

server <- function(input,output, session) {

  library(ggplot2) 
  library(DT) 

  output$plot <- renderPlot({
    ggplot(diamonds, aes(price, carat*input$w1)) + geom_point()
  })

  diam <- reactive({

    user_brush <- input$user_brush
    mysel <- brushedPoints(diamonds, user_brush)
    return(mysel)

  })

  output$table <- DT::renderDataTable(DT::datatable(diam()))
}

ui <-   fluidPage(
  sliderInput(inputId = "w1",
              label = "weight on carat",
              value = 5, min = 0, max = 40.0),
  plotOutput("plot", brush = "user_brush"),
  dataTableOutput("table")
)

shinyApp(ui = ui, server = server)

我怀疑服务器部分存在问题。即计算carat * input $ w1改变基础数据。闪亮迷路,无法识别要在表格输出中显示的数据。

到目前为止的一般想法:我需要使用carat * input $ w1的变量实现一个新的data.frame并引用此data.frame。不幸的是我无法运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个包含加权克拉的新数据框,并使用此新数据框进行绘图

library(shiny)
library(ggplot2)

server <- function(input,output, session) {

  weighted.diamonds <- reactive(
    cbind(diamonds, weighted_carat = diamonds$carat*input$w1)
  )

  output$plot <- renderPlot({
    ggplot(weighted.diamonds(), aes(price, weighted_carat)) + geom_point()
  })

  diam <- reactive({

    user_brush <- input$user_brush
    mysel <- brushedPoints(weighted.diamonds(), user_brush)
    return(mysel)

  })

  output$table <- DT::renderDataTable(DT::datatable(diam()))
}

ui <-   fluidPage(
  sliderInput(inputId = "w1",
              label = "weight on carat",
              value = 5, min = 0, max = 40.0),
  plotOutput("plot", brush = "user_brush"),
  dataTableOutput("table")
)

shinyApp(ui = ui, server = server)