R:使用管道将单个参数传递给函数

时间:2017-05-10 00:01:29

标签: 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))

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

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

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

2 个答案:

答案 0 :(得分:6)

您可以使用.在您的案例中引用功能中不同位置的管道数据:

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

答案 1 :(得分:2)

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

在多个地方使用安德鲁(Andrew)的答案中的/bin/false也会实现这一目标。

[示例] 要获取向量.的最后一个元素,我们可以使用此代码。

vec <- c("first", "middle", "last")

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

vec[length(vec)]

希望这对其他人有所帮助,因为它会对我有所帮助(我了解vec %>% .[length(.)] ,但无法在多个位置使用它)。