Как вложить несколько трубок магриттр

Это начинается как эстетический вопрос, но затем превращается в функциональный, особенно в отношении magrittr.

Я хочу добавить data_frame, который вручную вводится в тот, который уже есть, как показано ниже:

cars_0 <- mtcars %>% 
  mutate(brand = row.names(.)) %>%
  select(brand, mpg, cyl) 

new_cars <- matrix(ncol = 3, byrow = T, c(
  "VW Beetle",   25, 4, 
  "Peugeot 406", 42, 6))   # Coercing types is not an issue here.

cars_1 <- rbind(cars_0, 
  set_colnames(new_cars, names(cars_0))) 

Я пишу новые машины в матрице для "повышенной разборчивости", и поэтому мне нужно установить имена столбцов, чтобы они были привязаны к cars_0,

Если кто-то любит magrittr так же сильно, как и я, он может захотеть представить new_cars сначала и трубку это set_colnames

cars_1 <- rbind(cars_0, new_cars %>% 
  set_colnames(names(cars_0)))     

Или, чтобы избежать повторения, они захотят указать cars_0 и труба это rbind

cars_1 <- cars_0 %>% 
  rbind(., set_colnames(new_cars, names(.)))

Однако нельзя сделать и то, и другое, так как существует путаница в отношении того, кому это нужно.

cars_1 <- cars_0 %>% 
  rbind(., new_cars %>% set_colnames(names(.)))
## Error in match.names(clabs, names(xi)) : 
##   names do not match previous names

Мой вопрос: есть ли способ отличить два аргумента, которые передаются по трубопроводу?

1 ответ

Краткий ответ: нет.

Более длинный ответ: я не уверен, каково было бы обоснование для этого. Философия позади magrittr заключался в том, чтобы разворачивать составные функции, с основной целью облегчить чтение кода. Например:

f(g(h(x))) 

становится

h(x) %>% g() %>% f()

Попытка использовать каналы таким образом, чтобы два объекта интерпретировались как . аргумент идет вразрез с философией упрощения. Существуют обстоятельства, при которых вы можете иметь вложенные трубы, но среда должна оставаться отличной. Попытки пересечь две трубы в одной и той же среде можно сравнить с пересечением потоков.

введите описание изображения здесь

Не пересекать потоки:)

Другие вопросы по тегам