Есть ли способ изменить порядок аргументов в таких функциях, как вставка, которые принимают векторы в определенном порядке, чтобы сделать их совместимыми с операторами трубопроводов?

#r #dplyr #stringr

Вопрос:

У меня есть длинная серия кода с использованием каналов, которые заканчиваются аргументом, подлежащим отправке в paste(). Что-то вроде этого

 "string1" %>% paste ("string2", sep = "_")
 

результат «string1_string2». Однако я хотел бы «string2_string1». Есть ли решение, кроме сохранения переменных и запуска новой команды? Есть ли решение в пакете stringr?

Ответ №1:

Мы можем использовать base R ( R 4.1.0 )

 "string1" |>
    {(x) paste("string2", x, sep = "_")}()
[1] "string2_string1"
 

Ответ №2:

Вы можете использовать . в качестве заполнителя для передаваемого значения.

 "string1" %>% paste("string2", ., sep = "_")
#[1] "string2_string1"
 

То же самое будет работать и с stringr::str_c

 "string1" %>% stringr::str_c("string2", ., sep = "_")
#[1] "string2_string1"