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

następujących prac, jak oczekiwanodplyr: suma wewnątrz rzędu mutować

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 

Następujące nie:

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 

byłoby oczekiwać, wynik w kolumnie C jest taka sama jak powyżej, 14 wszędzie. Wgląd w to, co robię źle?

+0

Działa zgodnie z oczekiwaniami – Sotos

+0

@Sotos I jakiej wersji używasz? To nie działa dla mnie z 'dplyr 0.7.0'. Ten wygląd lubi dla mnie błąd. – m0nhawk

+2

Wygląda jak błąd hybrydowy; 'tibble (a = c (1,2,3), b = a^2, c = suma (b))' i 'tib%>% mutate (b = a^2, c = suma (.data $ b)) 'działają zgodnie z oczekiwaniami. – alistaire

Odpowiedz

3

Sprawdziłem w obu wersjach dplyr: wygląda jak błąd w nowym silniku tidyeval. Złożyłem błąd na Github.


Aktualizacja:

ta jest już ustalona. Issue. Nowa wersja dplyr 0.7.1 i nowszych już nie ma tego problemu.

+0

Dzięki za to. – Habert