Давайте предположим, что у нас есть 3 функции с этой минимальной функциональностью:
func1 <- function (x) {
x + 1
}
func2 <- function (x, plus = T) {
if (plus == TRUE) {
x + 2
} else {
x - 5
}
}
func3 <- function (x) {
x + 3
}
Я хотел бы вложить эту функцию друг в друга следующим образом с помощью оператора конвейера (%>%):
library(magrittr)
func1(0) %>% func2(plus = T) %>% func2(plus = F) %>% func3
# result: 1
Что является его эквивалентной версией:
func3(func2(func2(func1(0), plus = T), plus = F))
# result: 1
Я пытаюсь найти метод, который не требует дублирования функции func2 () (потому что мне приходится запускать ее много раз итакже я хотел бы изменить количество вызовов функции и параметра динамически).В настоящее время я не большой специалист по прикладным функциям или пакетам карт, но я думаю, что хотя бы один из них может справиться с этой задачей.
Это, конечно, просто дурацкий пример, мой реальный код намного сложнее, япросто попробуйте упростить мою проблему, чтобы найти решение.
Мне нужно использовать оператор трубы, поэтому меня интересуют только те решения, которые также работают с трубами.