功能失常.... dplyr功能没有在自定义功能中运行

时间:2015-07-25 06:05:22

标签: r function dplyr

对于我的研究,我组装了各种大小(100到50000行)和复杂性(2到6个分组变量)的数据集,但通常对所有数据集进行相同的计算集。我经常编写特定于每个数据集的R代码,但这变得非常耗时。现在我正在尝试编写灵活的函数来执行计算。我对包server.listen(port[, hostname][, backlog][, callback]) 感到满意,但在将dplyr函数合并到自定义函数中时遇到了问题。欢迎任何一般性建议,但以下是我目前的问题。

我试图让这个例子尽可能真实,所以我希望我这个例子清楚地阐明了我当前的问题。我正在尝试将dplyrs 4个分组变量提供给计算每DATATAXAGENUSHABITAT平均值的函数。然后我需要该函数在DATEDATES内安排TAXA。我的下面的功能是抛出各种错误。我已经包含了所需的GENUS。提前感谢您的任何帮助和建议。

RESULT

不同的分组变量。我的想法是在代码的开头设置这些通用分组向量,然后将它们提供给函数。这些通用分组变量中的变量数将根据所分析的数据集而变化。例如,TAXA.INFO可以包括4个分组#variables,并且可以有和另外的GROUP.2和GROUP.3。

DATA
 DATE   HABITAT TAXA    GENUS   1   2
06/30/13    Pool    51  A   10  10
06/30/13    Pool    51  A   4   4
06/30/13    Riff    51  A   1   1
06/30/13    Riff    51  A   3   3
07/27/13    Pool    51  A   10  10
07/27/13    Pool    51  A   4   4
07/27/13    Riff    51  A   1   1
07/27/13    Riff    51  A   3   3
06/30/13    Pool    43  B   10  10
06/30/13    Pool    43  B   4   4
06/30/13    Riff    43  B   1   1
06/30/13    Riff    43  B   3   3
07/27/13    Pool    43  B   10  10
07/27/13    Pool    43  B   4   4
07/27/13    Riff    43  B   1   1
07/27/13    Riff    43  B   3   3

1 个答案:

答案 0 :(得分:3)

您的问题似乎在arrange(mdy(z))部分。您需要注意哪些值是字符向量,哪些是可以在数据框上下文中评估的正确符号。您可以考虑将功能更改为

AVERAGE.ABUNDANCE = function(x, y, z, a) {
     group_by_(x, .dots=c(y, z)) %>%
     summarise_each(funs(mean)) %>%
     ungroup()%>%
     group_by_(.dots=a)%>%
     arrange_(.dots=lazyeval::interp(~mdy(x), x=as.name(z)))
  }

然后这个工作

AVERAGE.ABUNDANCE(DATA, PROD, DATE, TAXA.INFO)
#   TAXA GENUS HABITAT     DATE X1 X2
# 1   43     B    Pool 06/30/13  7  7
# 2   43     B    Riff 06/30/13  2  2
# 3   43     B    Pool 07/27/13  7  7
# 4   43     B    Riff 07/27/13  2  2
# 5   51     A    Pool 06/30/13  7  7
# 6   51     A    Riff 06/30/13  2  2
# 7   51     A    Pool 07/27/13  7  7
# 8   51     A    Riff 07/27/13  2  2