R 尝试从单个被动函数显示ggplot和数据帧

R 尝试从单个被动函数显示ggplot和数据帧,r,dataframe,ggplot2,shiny,R,Dataframe,Ggplot2,Shiny,我可以使用下面的代码显示ggplot折线图或数据框,但不能同时显示两者。我知道反应式函数应该创建一组代码,ggplot或dataframe可以使用,但我正在努力想一个好方法来设置代码,以便两者都可以使用它,或者找到一种方法来分别读取折线图的f2和表的Finance (来自server.r) 库(闪亮) 图书馆(GG2) #为滑块示例定义服务器逻辑 shinyServer(功能(输入、输出){ #建立广泛的财务表 Financials将绘图部分移动到另一个函数中,该函数可以调用mydata(),但

我可以使用下面的代码显示ggplot折线图或数据框,但不能同时显示两者。我知道反应式函数应该创建一组代码,ggplot或dataframe可以使用,但我正在努力想一个好方法来设置代码,以便两者都可以使用它,或者找到一种方法来分别读取折线图的f2和表的Finance

(来自server.r)

库(闪亮)
图书馆(GG2)
#为滑块示例定义服务器逻辑
shinyServer(功能(输入、输出){
#建立广泛的财务表

Financials将绘图部分移动到另一个函数中,该函数可以调用mydata(),但会返回数据上的绘图。您想调用同一个函数来执行两种不同类型的任务的具体原因是什么?

将绘图部分移动到另一个函数中,该函数可以调用mydata())但是返回数据上的曲线图。您想调用同一个函数来执行两种不同类型的任务,有什么具体原因吗?

我们可以返回一个列表,例如:

return(list(mydata = data.frame(...), myplot = ggplot(...))
然后在
renderPlot({mydata()$myplot})
renderTable({mydata()$mydata})

以下是一个工作示例:

library(shiny)
library(ggplot2)

runApp(
  shinyApp(
    ui = {
      fluidPage(
        sidebarPanel(
          selectInput("mpg", "test", choices = seq(20, 35, 5), selected = 20)),
        mainPanel(
          tableOutput("myData"),
          plotOutput("myPlot")))
    },
    server = function(input, output, session){
      mydata <- reactive({
        mylist <- list(
          myData = mtcars[ mtcars$mpg <= input$mpg, ],
          myPlot = ggplot(mtcars[ mtcars$mpg <= input$mpg, ], aes(mpg, cyl)) +
            geom_point() +
            ggtitle(input$mpg)
        )
        return(mylist)
      })
      output$myData <- renderTable({mydata()$myData})
      output$myPlot <- renderPlot({mydata()$myPlot})
    }
  )
)
库(闪亮)
图书馆(GG2)
runApp(
shinyApp(
用户界面={
流动摄影(
侧栏面板(
选择输入(“mpg”、“测试”,选项=seq(20,35,5),选择=20),
主面板(
tableOutput(“myData”),
绘图输出(“myPlot”))
},
服务器=功能(输入、输出、会话){

mydata我们可以返回一个列表,例如:

return(list(mydata = data.frame(...), myplot = ggplot(...))
然后在
renderPlot({mydata()$myplot})
renderTable({mydata()$mydata})

以下是一个工作示例:

library(shiny)
library(ggplot2)

runApp(
  shinyApp(
    ui = {
      fluidPage(
        sidebarPanel(
          selectInput("mpg", "test", choices = seq(20, 35, 5), selected = 20)),
        mainPanel(
          tableOutput("myData"),
          plotOutput("myPlot")))
    },
    server = function(input, output, session){
      mydata <- reactive({
        mylist <- list(
          myData = mtcars[ mtcars$mpg <= input$mpg, ],
          myPlot = ggplot(mtcars[ mtcars$mpg <= input$mpg, ], aes(mpg, cyl)) +
            geom_point() +
            ggtitle(input$mpg)
        )
        return(mylist)
      })
      output$myData <- renderTable({mydata()$myData})
      output$myPlot <- renderPlot({mydata()$myPlot})
    }
  )
)
库(闪亮)
图书馆(GG2)
runApp(
shinyApp(
用户界面={
流动摄影(
侧栏面板(
选择输入(“mpg”、“测试”,选项=seq(20,35,5),选择=20),
主面板(
tableOutput(“myData”),
绘图输出(“myPlot”))
},
服务器=功能(输入、输出、会话){

我的数据是个好主意。我写的代码很草率,因为我不明白我在做什么。下次我会知道得更好。谢谢!好主意。我写的代码草率,因为我不明白我在做什么。下次我会知道得更好。谢谢!