Тройник из магритра% T>% эквивалент - PullRequest
1 голос
/ 13 апреля 2020

Я смотрю на пример трубы из магритра% T>% в документации, но не сразу понимаю, что она делает. Может кто-нибудь показать, что эквивалентный код без тройника?

rnorm(200) %>%
matrix(ncol = 2) %T>%
plot %>% # plot usually does not return anything. 
colSums

Ответы [ 2 ]

6 голосов
/ 13 апреля 2020

%T>% предположительно назван в честь Т-образного трубного разветвителя, используемого в сантехнике.

T splitter

Мы можем заменить %T>% на %>% если мы заменим строку plot в вопросе на строку plot, показанную ниже (и отмеченную двойным га sh). Это строит график его ввода и затем перенаправляет его на выход, чтобы конвейер можно было продолжить.

rnorm(200) %>%
  matrix(ncol = 2) %>%
  { plot(.); . } %>%    ##
  colSums

Таким образом, обработка выполняется по следующему графику:

rnorm --> matrix --T--> colSums
                   |
                   v
                  plot
1 голос
/ 13 апреля 2020

Мы можем обернуть его в {}, чтобы получить эквивалентный результат

library(dplyr)
rnorm(200) %>%
   matrix(ncol = 2)  %>% 
      { plot(.)
       colSums(.)
    }

ПРИМЕЧАНИЕ. Сначала это было опубликовано с {}

...