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

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

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

library(babynames)
library(dplyr)

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

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

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

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

XXX 应该通过管道传递给切片,但我卡住了。感谢任何帮助。

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

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

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

在多个地方使用 Andrew 的回答中的 . 也可以实现这一点。

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

vec[length(vec)]

使用管道,下面的代码实现了同样的事情:

vec %>% .[length(.)] 

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