R 如何获得一个闪亮的反应式数据表输出,然后对过滤后的数据应用一个函数?

R 如何获得一个闪亮的反应式数据表输出,然后对过滤后的数据应用一个函数?,r,shiny,aggregate,r-markdown,R,Shiny,Aggregate,R Markdown,我可能完全走错了方向,但我真的可以在如何做这件事上提供一些指导 我的数据集是一个data.frame,我编写了一个反应式脚本,在用户单击按钮时根据一列对其进行过滤。当我在下面的脚本中输入renderDataTable之后输入filtered.data()时,我可以查看输出表,但我想要的是将aggregate函数应用于输出数据并查看该输出 简而言之,我想过滤我的数据帧,然后对过滤后的数据应用一个函数,并输出结果 一个不起作用的例子: library(shiny) library(DT) libra

我可能完全走错了方向,但我真的可以在如何做这件事上提供一些指导

我的数据集是一个
data.frame
,我编写了一个反应式脚本,在用户单击按钮时根据一列对其进行过滤。当我在下面的脚本中输入
renderDataTable
之后输入
filtered.data()
时,我可以查看输出表,但我想要的是将
aggregate
函数应用于输出数据并查看该输出

简而言之,我想过滤我的数据帧,然后对过滤后的数据应用一个函数,并输出结果

一个不起作用的例子:

library(shiny)
library(DT)
library(dplyr)
# Make a data frame
weight <- c(1,3,4,7,8,9,12)
material <- c("Wood", "Wood", "Steel", "Steel", "Rock", "Rock", "Rock")
df <- data.frame(weight, material)

shinyApp(
ui = fluidPage(

  selectInput("type", "Material:",
              choices = as.character(unique(df$material))),
  actionButton("Filter", "Set Filter"),
  DT::dataTableOutput("filtered.result")

),

#server.r
server = function(input, output) {

  filtered.data <- eventReactive(input$Filter, {
    df %>%
      filter(material == input$type)
  })

  output$filtered.result <- DT::renderDataTable({ 
    aggregate(weight~material, filtered.data, mean)
  })
})
库(闪亮)
图书馆(DT)
图书馆(dplyr)
#制作数据帧
重量您可以使用

敏锐的

因此,将服务器代码替换为

server = function(input, output) {
  observeEvent(input$Filter, {
    output$filtered.result <- DT::renderDataTable({ 
      aggregate(
        weight~material, 
        df %>%
          filter(material == input$type), 
        mean)
    })
  })
}
server=功能(输入、输出){
observeEvent(输入$Filter{
输出$filtered.result%
过滤器(材料==输入$type),
平均数)
})
})
}

此外,选择input Product event,如果您想在更改输入值后立即更改结果,可以删除按钮并将observeEvent中的第一个参数更改为input$type(或将许多输入更改为“c(input$type1,input$type2)”)