R 反应式数据、转换和覆盖

R 反应式数据、转换和覆盖,r,shiny,R,Shiny,我是R Shining的新手,而且我在反应式数据集方面遇到了一些问题 我的想法是,加载数据集,对其进行一些计算,打印结果。如果我将数据集设置为 df是我自己做的 server <- function(input, output) { vals <- reactiveValues() ## Create a reactive value dataset vals$mt <- data.frame(mtcars) ## Create a transforme

我是R Shining的新手,而且我在反应式数据集方面遇到了一些问题

我的想法是,加载数据集,对其进行一些计算,打印结果。如果我将数据集设置为


df是我自己做的

server <- function(input, output) {

  vals <- reactiveValues()

  ## Create a reactive value dataset 
  vals$mt <- data.frame(mtcars)

  ## Create a transformed set out of it

  mt_transformed <- reactive({
          df <- vals$mt
          mt_transformed <- data.frame(tapply(df$hp, df$cyl, mean),
                  names(tapply(df$hp, df$cyl, mean)))
          names(mt_transformed) <- c("hp", "cyl")
          return( mt_transformed)
        })

  ## Transform the initial dataset, via deleting the last row
  observeEvent(input$delete, {
    vals$mt <- vals$mt[-nrow(vals$mt),]
    })

  ## lets hope the plot changes everytime I delete a car
  output$plot <- renderPlot({
    ggplot(mt_transformed()) +
      geom_bar( aes(x = cyl, y = hp ), stat = "identity" )
    }) 

}
服务器
library(shiny)
library(ggplot2)
ui <- fluidPage(
  actionButton(inputId = "delete", label = "destroy car"),
  plotOutput("plot")

   )
server <- function(input, output) {

  vals <- reactiveValues()

  ## Create a reactive value dataset 
  vals$mt <- data.frame(mtcars)

  ## Create a transformed set out of it

  mt_transformed <- reactive({
          df <- vals$mt
          mt_transformed <- data.frame(tapply(df$hp, df$cyl, mean),
                  names(tapply(df$hp, df$cyl, mean)))
          names(mt_transformed) <- c("hp", "cyl")
          return( mt_transformed)
        })

  ## Transform the initial dataset, via deleting the last row
  observeEvent(input$delete, {
    vals$mt <- vals$mt[-nrow(vals$mt),]
    })

  ## lets hope the plot changes everytime I delete a car
  output$plot <- renderPlot({
    ggplot(mt_transformed()) +
      geom_bar( aes(x = cyl, y = hp ), stat = "identity" )
    }) 

}