Search code examples
rpipingmagrittr

R: Using piping to pass a single argument to multiple locations in a function


I am attempting to exclusively use piping to rewrite the following code (using babynames data from babynames package:

library(babynames)
library(dplyr)

myDF <- babynames %>% 
group_by(year) %>% 
summarise(totalBirthsPerYear = sum(n))

slice(myDF, seq(1, nrow(myDF), by = 20))

The closest I have gotten is this code (not working):

myDF <- babyNames %>% 
group_by(year) %>% 
summarise(totalBirthsPerYear = sum(n)) %>% 
slice( XXX, seq(1, nrow(XXX), by = 20))

where XXX is meant to be passed via pipes to slice, but I'm stuck. Any help is appreciated.


Solution

  • You can reference piped data in a different position in the function by using the . In your case:

    myDF2 <- babynames %>%
        group_by(year) %>%
        summarize(totalBirthsPerYear = sum(n)) %>%
        slice(seq(1, nrow(.), by = 20))