【发布时间】:2021-07-28 03:57:12
【问题描述】:
单击操作按钮后,我试图在 Shiny mainPanel 上分别显示两个表(dt2 和 dt3)。 dt2 涉及所选类型(mpg 数据集)的前五辆汽车,而 dt3 计算所选年份的平均 cty。不幸的是,它不起作用,因为我只有这张小桌子:
如何在主面板上分别显示两个表格? (例如左侧为 dt2,右侧为 dt3)
注意:dt2 和 dt3 在某种意义上是相关的,即 dt3 派生自 dt2
UI 方面:
library(shiny)
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("manufacturer", "Car Type:", c("audi","chevrolet")),
selectInput("year", "Year:", c("1999","2008")),
actionButton("action", "Go!")
),
mainPanel(tableOutput("cty_mean"))
)
))
服务器端:
shinyServer(function(input, output) {
mydata <- eventReactive(input$action, {
library(ggplot2)
library(dplyr)
dt <- mpg
dt2 <- dt %>%
filter(manufacturer==input$manufacturer) %>%
mutate(mean = mean(cty)) %>% slice(1:5)
dt2
dt3 <- dt2 %>% group_by(input$year) %>%
summarise(mean = mean(cty))
dt3
})
output$cty_mean <- renderTable({ mydata() })
})
【问题讨论】:
-
我认为您可能希望您的第二个 dt3 表达式如下:
dt3 <- dt2 %>% group_by(year) %>% filter(year == input$year) %>% summarise(mean = mean(cty))。当您将input$year之类的输入传递给group_by()时,您实际上是在制作整个数据集的一组。