如何使Shiny的输入$var可用于dplyr::summary()
我有以下资料: 那么,如何使输入$col_id可用于汇总? 正确的方法是什么 非光泽上下文结果是:如何使Shiny的输入$var可用于dplyr::summary(),r,shiny,dplyr,markdown,R,Shiny,Dplyr,Markdown,我有以下资料: 那么,如何使输入$col_id可用于汇总? 正确的方法是什么 非光泽上下文结果是: > diamonds %>% filter(cut=="Good") %>% select(price) %>% summarise(mean = mean(price), sd=sd(price), n=n()) # A tibble: 1 × 3 mean sd n <dbl> <dbl> <i
> diamonds %>% filter(cut=="Good") %>% select(price) %>% summarise(mean = mean(price), sd=sd(price), n=n())
# A tibble: 1 × 3
mean sd n
<dbl> <dbl> <int>
1 3928.864 3681.59 4906
使用dplyr v0.5.0.9002的开发版本,您可以使用rlang::sym将字符串转换为符号,然后使用unquote操作符!!或UQ来指代dplyr动词中的变量
library(dplyr)
var1 <- "Good" # replace with input$op_id
var2 <- rlang::sym("price") # replace with input$col_id
diamonds %>%
filter(cut == var1) %>%
select_at(vars(!!var2)) %>%
summarise_at(vars(!!var2), funs(mean, sd, n()))
其中:
## A tibble: 1 × 3
# mean sd n
# <dbl> <dbl> <int>
#1 3928.864 3681.59 4906
## A tibble: 1 × 6
# price_mean depth_mean price_sd depth_sd price_n depth_n
# <dbl> <dbl> <dbl> <dbl> <int> <int>
#1 3928.864 62.36588 3681.59 2.169374 4906 4906
有关更多信息,请查看渐晕图的示例您是否尝试过使用Summary_uu函数而不是Summary函数,以便让它接受文本字符串输入?@NickCriswell:尝试过,也会出现同样的问题。请尝试dat%>%selectone of Input$col_id%>%Summary_mean=lazyeval::interp~meanx,x=as.name输入$col\u id谢谢变量的含义!!var2,我在哪里可以找到关于它的文档/解释?看一看小插曲:最后,为什么var2只是将字符串转换为符号。或者,您可以使用as.name。从文档中可以看出:“名称”也称为“符号”,是指通过名称而不是绑定到该名称的对象(如果有)的值来引用R对象的一种方式。
## A tibble: 1 × 3
# mean sd n
# <dbl> <dbl> <int>
#1 3928.864 3681.59 4906
var1 <- "Good"
var2 <- rlang::syms(c("price", "depth"))
diamonds %>%
filter(cut == var1) %>%
select_at(vars(UQS(var2))) %>%
summarise_at(vars(UQS(var2)), funs(mean, sd, n()))
## A tibble: 1 × 6
# price_mean depth_mean price_sd depth_sd price_n depth_n
# <dbl> <dbl> <dbl> <dbl> <int> <int>
#1 3928.864 62.36588 3681.59 2.169374 4906 4906