R:使用管道将单个参数传递给函数中的多个位置

use*_*855 2 r piping magrittr

我试图专门使用管道来重写以下代码(使用babynames包中的babynames数据:

library(babynames)
library(dplyr)

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

slice(myDF, seq(1, nrow(myDF), by = 20))
Run Code Online (Sandbox Code Playgroud)

我得到的最接近的是这段代码(不工作):

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

其中XXX意味着通过管道传递切片,但我被卡住了.任何帮助表示赞赏.

And*_*son 6

您可以使用以下.情况在函数中的不同位置引用管道数据:

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


Dav*_*ave 6

不确定这是否应该作为单独的问题和答案打开,但万一有人到达这里,因为我确实在标题中寻找MULTIPLE的答案: R:使用管道将单个参数传递到函数中的多个位置

.在多个地方使用来自安德鲁的答案也可以实现这一点。

[示例]要获取向量的最后一个元素,vec <- c("first", "middle", "last") 我们可以使用此代码。

vec[length(vec)]
Run Code Online (Sandbox Code Playgroud)

使用管道,以下代码实现了相同的目的:

vec %>% .[length(.)] 
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助,因为它会帮助我(我知道.但无法在多个位置使用它)。