library(dplyr)
tib <- tibble(a = c(1,2,3))
The following work as expected:
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
The following does not:
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
I would expect the result in column c to be the same as above, 14 everywhere. Any insight about what I am doing wrong?
Syntax: mutate(new-col-name = rowSums(.)) The rowSums() method is used to calculate the sum of each row and then append the value at the end of each row under the new column name specified. The argument . is used to apply the function over all the cells of the data frame. Syntax: rowSums(.)
To find the row wise sum of n number of columns can be found by using the rowSums function along with subsetting of the columns with single square brackets.
First of all, create a data frame. Then, using plus sign (+) to add two rows and store the addition in one of the rows. After that, remove the row that is not required by subsetting with single square brackets.
We can calculate the sum of multiple columns by using rowSums() and c() Function. we simply have to pass the name of the columns.
I have checked with both dplyr
versions: it's looks like a bug in new tidyeval
engine. I have filed the bug on Github.
Update:
This is now fixed. Issue
. The new version of dplyr
0.7.1 and above doesn't have this issue anymore.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With