dplyr组通过不在系统中工作

dplyr组通过不在系统中工作,r,group-by,shiny,dplyr,R,Group By,Shiny,Dplyr,我正在使用R Shining应用程序,因为我有两个下拉框。第一个下拉列表填充分类变量,第二个下拉列表填充数值变量。然后我在分类变量上应用groupby。 这是我的密码 dataset<- dataUpload() var1 <- as.character(input$variable1) var2 <- as.character(input$variable2) v$data <- dataset %>% group_by(dataset[,var1]) %

我正在使用R Shining应用程序,因为我有两个下拉框。第一个下拉列表填充分类变量,第二个下拉列表填充数值变量。然后我在分类变量上应用groupby。 这是我的密码

dataset<- dataUpload()

var1 <- as.character(input$variable1)
var2 <- as.character(input$variable2)

v$data <- dataset %>%
  group_by(dataset[,var1]) %>%
  summarize(Sum=sum(dataset[,var2])) %>%
  arrange(desc(Sum))
这是数量变量的总和。但我想要这样的东西

dish_quant <- df_final %>%
              group_by(dish_name) %>%
              summarize(Dish_Quantity=sum(dish_quantity)) %>%
              arrange(desc(Dish_Quantity))

        dish_name           Dish_Quantity
           (fctr)              (int)
 1       Chicken Kadai            11
 2     Chicken Biryani             9
 3         Dal Makhani             6
 4 Sai Bhaji and Pulav             3
 5          Tava Pulav             3
 6          Total Meal             3
 7       Chicken Kabab             2
dish\u quant%
分组依据(菜名)%>%
汇总(盘数量=总计(盘数量))%>%
安排(描述(盘子数量))
菜肴名称菜肴数量
(fctr)(国际)
1只卡代鸡11
2比里亚尼鸡9
3达尔马哈尼6
4 Sai Bhaji和Pulav 3
5塔瓦普拉夫3
6总膳食3
7鸡肉卡巴布2

我哪里做错了?我认为在Shiny中引用数据框的列名时会出现问题

您的电脑遇到了问题
dplyr做的事情有点不同,通常用列的名称来调用它,它会对这些列进行一些处理。但是,当将它与角色变量一起使用时,这种魔术失败了,您需要依赖于标准评估

要修复它,您需要使用
dplyr
动词的标准求值版本(它们以
\uu
结尾),并在函数调用中使用lazyeval

以下是使用内置mtcars数据集对代码的修复:

library(lazyeval) # so we can use interpret
library(dplyr)

var1 <- "cyl"
var2 <- "mpg"
mtcars %>%
    group_by_(var1) %>% #note the _
    summarize_(Sum = interp(~sum(x), x = as.name(var2))) %>% #note the _ and the interp call
    arrange(desc(Sum))

Source: local data frame [3 x 2]

    cyl   Sum
  (dbl) (dbl)
1     4 293.3
2     8 211.4
3     6 138.2
library(lazyeval)#因此我们可以使用
图书馆(dplyr)
var1%#注意_
summary_uu(Sum=interp(~Sum(x),x=as.name(var2))%>%#注意u和interp调用
安排(说明(总和))
来源:本地数据帧[3 x 2]
团和
(dbl)(dbl)
1     4 293.3
2     8 211.4
3     6 138.2
library(lazyeval) # so we can use interpret
library(dplyr)

var1 <- "cyl"
var2 <- "mpg"
mtcars %>%
    group_by_(var1) %>% #note the _
    summarize_(Sum = interp(~sum(x), x = as.name(var2))) %>% #note the _ and the interp call
    arrange(desc(Sum))

Source: local data frame [3 x 2]

    cyl   Sum
  (dbl) (dbl)
1     4 293.3
2     8 211.4
3     6 138.2