2017-06-16 60 views
5
library(dplyr) 
tib <- tibble(a = c(1,2,3)) 

下按预期方式工作:dplyr:总和内连续发生变异

tib %>% mutate(b = a^2, c = sqrt(b)) 
# A tibble: 3 x 3 
     a  b  c 
    <dbl> <dbl> <dbl> 
1  1  1  1 
2  2  4  2 
3  3  9  3 

tib %>% mutate(b = a^2, c = sum(a)) 
# A tibble: 3 x 3 
     a  b  c 
    <dbl> <dbl> <dbl> 
1  1  1  6 
2  2  4  6 
3  3  9  6 

tib %>% mutate(b = a^2) %>% mutate(c = sum(b)) 
# A tibble: 3 x 3 
     a  b  c 
    <dbl> <dbl> <dbl> 
1  1  1 14 
2  2  4 14 
3  3  9 14 

下列不:

tib %>% mutate(b = a^2, c = sum(b)) 
# A tibble: 3 x 3 
     a  b    c 
    <dbl> <dbl>   <dbl> 
1  1  1 1.482197e-323 
2  2  4 1.482197e-323 
3  3  9 1.482197e-323 

我期望的结果列C是相同的以上,到处都是14。 任何有关我在做什么错误的见解?

+0

按预期为我工作 – Sotos

+0

@Sotos您使用的是哪个版本?它不适用于'dplyr 0.7.0'。这看起来很喜欢我的错误。 – m0nhawk

+2

看起来像一个混合评估错误; 'tibble(a = c(1,2,3),b = a^2,c = sum(b))'和'tib%> mutate(b = a^2,c = sum(.data $ b ))按预期工作。 – alistaire

回答

3

我检查了两个dplyr版本:它看起来像一个新的tidyeval引擎中的错误。我已经提交了Github的错误。


更新:

这是现在固定。 Issuedplyr 0.7.1及以上的新版本不再有这个问题了。

+0

谢谢你这么做。 – Habert