dplyr group不在Shiny工作

时间:2015-12-27 15:27:50

标签: r group-by shiny dplyr

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

float matrix[3][10][10];
int i, j, k, row[2], col[2];
for(i=0; i<2; i++){
  printf("Enter the number of rows and columns of matrix %d:\n", i+1);
  scanf("%d %d", &row[i], &col[i]);
  for(j=0; j<row[i]; j++)
    for(k=0; k<col[i]; k++)
      scanf("%f", &matrix[i][j][k]);
}

它给了我以下输出。

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_quantity变量的总和。但我想要这样的东西。

 Source: local data frame [7 x 2]

  dataset[[var1]]                Sum
           (fctr)               (int)

1     Chicken Biryani            37
2       Chicken Kabab            37
3       Chicken Kadai            37
4         Dal Makhani            37
5 Sai Bhaji and Pulav            37
6          Tava Pulav            37
7          Total Meal            37

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

1 个答案:

答案 0 :(得分:7)

您遇到了SE/NSE的问题。 >>> df value1 value2 value3 0 1 9 5 1 5 NaN 4 2 9 55 NaN 3 NaN 4 9 >>> df.mean(axis=1) 0 5.0 1 4.5 2 32.0 3 6.5 dtype: float64 做的事情有点不同,通常你用列的名称来调用它,它会对它进行一些处理。但是,当它与字符变量一起使用时,这种魔法就会失败,你需要依靠标准评估。

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

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

_