以闪亮的意外行为取消组合和选择
Posted
技术标签:
【中文标题】以闪亮的意外行为取消组合和选择【英文标题】:Ungroup & Select in shiny unexpected behaviour 【发布时间】:2021-12-24 09:15:14 【问题描述】:我有一个闪亮的应用程序,当我将输出的“un-shiny”版本的结果与 Shiny 中的 tableOutput
进行比较时,取消分组无法正常工作。我期待两者都有相同的结果。请参阅此内容以供参考:
# "un-shiny" version to compare results, not part of the app.
# This is to match with mpg input in shiny
mtcars %>%
select(mpg, cyl, disp,
wt, gear) %>%
mutate(wt = as.integer(wt),
mpg =as.integer(mpg)) %>%
filter(gear >= 4 & gear <= 5) %>%
group_by(wt,gear, mpg) %>%
tally() %>%
ungroup() %>%
group_by(gear,mpg) %>%
rename(Count= n)%>%
mutate(summ = sum(Count),
Percentage = round((Count/summ)*100, 2))
这给了我这个输出-
现在,在闪亮的应用程序中-
library(dplyr)
library(tidyr)
library(shiny)
#global.R -----
mtcars_rdpr <- mtcars %>%
select(mpg, cyl, disp,
wt, gear) %>%
mutate(wt = as.integer(wt),
mpg =as.integer(mpg)) %>%
filter(gear >= 4 & gear <= 5) %>%
#ui.R ----
ui <- fluidPage(
sidebarLayout(
mainPanel(
selectInput("pickvalue", label = "Gears", colnames(mtcars_rdpr%>%
select(mpg, cyl)),
selected = NULL, multiple = F)),
tableOutput("tableOut")
)
)
# server.R-----
server <- function(input, output, session)
gears <- reactive(
dat <- mtcars_rdpr
if (!is.null(input$pickvalue))
dat <- dat %>%
group_by(wt,gear, input$pickvalue) %>%
tally() %>%
ungroup() %>% # when i mention specific columns in the function, I get a warning
group_by(gear,input$pickvalue) %>%
rename(Count= n)%>%
mutate(summ = sum(Count),
Percentage = round((Count/summ)*100, 2))
#dat <- dat %>% select(-input$pickvalue) # this gives a warning
return(dat)
)
output$tableOut<- renderTable(gears())
shinyApp(ui = ui, server=server)
如果有人能向我解释为什么两者之间的结果不匹配,我将不胜感激。
【问题讨论】:
【参考方案1】:您不能将非标准评估与字符串混为一谈,这实际上是在您的代码中完成的。
从 dplyr 1.0.0 开始,您可以使用 cross 并将它们组合在一个向量中:
只是相关的行:
group_by(across(c("gear", input$value))) %>%
【讨论】:
哇,我不知道cross函数。非常感谢:)以上是关于以闪亮的意外行为取消组合和选择的主要内容,如果未能解决你的问题,请参考以下文章