2017-06-16 66 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