评估顺序与dplyr mutate

时间:2016-08-16 04:57:09

标签: r dplyr lazy-evaluation operator-precedence nse

我在mutate调用中使用了2个函数。每行产生预期结果,而另一行产生所有行的相同值:

library(dplyr)

df <- data.frame(X = rpois(5, 10), Y = rpois(5,10))

pv <- function(a, b) {
  fisher.test(matrix(c(a, b, 10, 10), 2, 2),
              alternative='greater')$p.value
}

div <- function(a, b) a/b

mutate(df,  d = div(X,Y), p = pv(X, Y))

产生类似的东西:

    X  Y         d         p
1  9 15 0.6000000 0.4398077
2  8  7 1.1428571 0.4398077
3  9 14 0.6428571 0.4398077
4 11 15 0.7333333 0.4398077
5 11  7 1.5714286 0.4398077

d列有所不同,但v是常量,其值实际上并不对应任何行中的XY值。

我怀疑这与NSE有关,但我不知道如何从我能找到它的litlle。

divpv的不同行为的原因是什么?如何修复pv

0 个答案:

没有答案