混淆了使用RStudio的Shiny在函数之间传递数据帧

时间:2018-04-16 01:00:40

标签: r shiny

我想要出现两个情节。首先是散点图,然后是折线图。图表并不重要。这是我第一次使用Shiny。

的最佳方式是什么?
  plotOutput("needles"),
  plotOutput("plot")

使用来自相同针数据框的数据?我想我对如何在plotOutput函数之间传递“needle”数据框感到困惑。

library(shiny)
library(tidyverse)
library(scales)

# Create the data frame ________________________________________________
create_data <- function(num_drops) {
  needles <- tibble (
    x = runif(num_drops, min = 0, max = 10),
    y = runif(num_drops, min = 0, max = 10)
  )
}

# Show needles ________________________________________________
show_needles <- function(needles) {
 ggplot(data = needles, aes(x = x, y = y)) + 
    geom_point()

}

# Show plot __________________________________________________
show_plot <- function(needles) {
  ggplot(data = needles, aes(x = x, y = y)) + 
    geom_line()
}

# Create UI
ui <- fluidPage(

  sliderInput(inputId = "num_drops", 
              label = "Number of needle drops:",
              value = 2, min = 2, max = 10, step = 1),

  plotOutput("needles"),
  plotOutput("plot")

)

server <- function(input, output) {

  output$needles <- renderPlot({
    needles <- create_data(input$num_drops)
    show_needles(needles)
  })

  output$plot <- renderPlot({
    show_plot(needles)
  })
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

我们可以在create_data中的reactive调用内执行server,然后在renderPlot内执行,将值(needles())作为参数传递给show_needlesshow_plot

server <- function(input, output) {

  needles <- reactive({
     create_data(input$num_drops)

  })
  output$needles <- renderPlot({

    show_needles(needles())
  })

  output$plot <- renderPlot({

    show_plot(needles())
  })
}

shinyApp(ui = ui, server = server)

-output

enter image description here