如何在R中重用长链管道运算符的一部分?

我有一组管道操作符 ( %>%)链,用不同的数据集做不同的事情。

例如:

dataset %>%
   mutate(...) %>%
   filter(...) %>%
   rowwise() %>%
   summarise() %>%
   etc...

如果我想重用这些链的某些部分,有没有办法做到这一点,而不仅仅是将它包装成一个函数?例如(显然是伪代码):

subchain <- filter(...) %>%
   rowwise() %>%
   summarise() 

# and then instead of the chain above it would be:
dataset %>%
   mutate(...) %>%
   subchain() %>%
   etc...

回答

在语法上类似于所需的伪代码:

library(dplyr)

subchain <- . %>% 
  filter(mass > mean(mass, na.rm = TRUE)) %>% 
  select(name, gender, homeworld)

all.equal(
  starwars %>% 
    group_by(gender) %>% 
    filter(mass > mean(mass, na.rm = TRUE)) %>% 
    select(name, gender, homeworld),
  starwars %>% 
    group_by(gender) %>% 
    subchain()
)

使用点.作为管道序列的开始。这实际上接近于函数包装,但这被称为 magrittr 函数序列。查看?functions并尝试magrittr::functions(subchain)


以上是如何在R中重用长链管道运算符的一部分?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>