Есть ли более простой способ запомнить последовательность, в которой мы можем использовать функцию канала в R-программировании? - PullRequest
0 голосов
/ 27 января 2020

Часто я ошибаюсь при использовании функции pipe (%>%) в R с пакетами dplyr или tidyverse. Есть ли более простой способ запомнить, в котором мы можем упорядочить функцию%>%.

Пример: на каком основании мы использовали последовательность функций фильтра, group_by, суммирования и упорядочения здесь:

mtcars %>%
        filter(carb > 1) %>%
        group_by(cyl) %>%
        summarise(Avg_mpg = mean(mpg)) %>%
        arrange(desc(Avg_mpg))

Поскольку на SQL сервере есть последовательность, такая как SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

Есть ли более простой способ запомнить последовательность, в которой мы можем использовать функцию%>%?

1 Ответ

1 голос
/ 27 января 2020

Нет установленного порядка, потому что вы можете поместить эти команды в любом порядке или последовательности в зависимости от того, что вы хотите сделать.

Наблюдать:

mtcars %>%
group_by(cyl) %>%
summarise(Avg_mpg = mean(mpg), Avg_carb = mean(carb)) %>%
filter(Avg_carb > 1) %>%
arrange(desc(Avg_mpg))

В равной степени допустим как пример кода, но, конечно, делает что-то совсем другое.

Вы должны понимать, что труба %>% здесь на самом деле не имеет значения! Канал просто упрощает ваш синтаксис, опуская набор данных в каждом вызове функции.

filter, arrange, mutate и т. Д. c. может быть соединен в цепочку, как вам нравится, и вам не нужно следовать заданному шаблону c.

group_by() и summarise() несколько отличаются тем, что в основном имеет смысл сначала группировать, а затем обобщать, но вы можете цепочка другой группировки непосредственно после вызова суммирования или суммирования без первой группировки.

Опять канал не является инструментом последовательности, он просто делает это:

# without pipe

filter(mtcars, carb > 1)

# with pipe

mtcars %>%
filter(carb > 1)


# without pipe

arrange(filter(mtcars, carb > 1),mpg)


# with pipe

mtcars %>%
filter(mtcars, carb > 1) %>%
arrange(mpg)

Канал просто сохраняет фрейм данных, полученный в результате ваша операция и подталкивает ее к следующей операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...