LINUX.ORG.RU

Ответ на: комментарий от Stil

У меня есть эта книга, твёрдая копия. В ней очень много внимания уделено частным применениям языка R и очень мало - самому языку.

Например, меня очень заинтересовали возможности «конвейерной» обработки одного вектора несколькими функциями - а этого нет в упомянутой вами книге.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от psv1967

Именно! Пусть даже сахар, но мне конвейерный синтаксис интуитивно понятен, поскольку я очень «прикипел» к нему в Perl (map, grep, split). Да и для функционального программирования возможность построения конвейеров - одна из ключевых вещей.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

R сам по себе «векторный», романтика map-filter-reduce остро в нем вообще не стоит (хотя прямо в base всё есть :)

Ну и тогда надо писать вместо

a <- b(c(e(d)))

не

a <- d %>% e %>% c %>% b

а неукоснительно и последовательно

d %>% e %>% c %>% b -> a

:)

проблема только с «]<-» и непонятно как выбраться... надо определять %<% тогда для «единства дизайна» :)

psv1967 ★★★★★
()
Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от unikum

Вот только не надо усугублять сишным форматированием? :)

hourly_delay <- filter(summarise(group_by(filter(flights,
                                                 !is.na(dep_delay)),
                                          date, hour),
                                 delay = mean(dep_delay),
                                 n = n()),
                       n > 10)

PS после нескольких неприятных ситуаций с макросами Викхама стараюсь их использовать ограничено.... Они у него периодически перестают быть «гражданами языка первого сорта» :(

psv1967 ★★★★★
()
Последнее исправление: psv1967 (всего исправлений: 2)
Ответ на: комментарий от psv1967

А почему бы и нет ?:)

P.S.: Сам я пайпы и все эти новомодные веяния использую редко и с осторожностью с предварительном Code Rewiew.

unikum ★★★★★
()
Ответ на: комментарий от unikum

А почему бы и нет ?:)

потому что тогда можно стать похожим на самого Викхама.

Но только увы в присущей ему аргументации (как в его недавней дискуссии с создателем data.table()), и стратегии продвижения своих разработок :(.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

не
a <- d %>% e %>% c %>% b
а неукоснительно и последовательно
d %>% e %>% c %>% b -> a

Но почему?)

В варианте на несколько строк первое, имхо, читаемее

a ->
  b %>%
  filter(...) %>%
  select(...) %>%
  some_process(...)

Как бы ты это записал?

Stil ★★★★★
()
Ответ на: комментарий от Stil

Потому что ты не умеешь считать :)

name3(name2(name1))

vs

name1 %>% name2 %>% name3

Мой вариант 4 символа + все name

Твой вариант 6 символов + все name

Ещё вопросы? :)

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Ещё вопросы? :)

Ага :)

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

Stil ★★★★★
()
Ответ на: комментарий от Stil

Как я понял, для однородность. Пайпы с лева на право и присваивание должно происходить так же. Но тогда вернее другой вариант:

d %>% e %>% c %>% b %>% assign(a, value=.)

Давайте делать все через пайпы!

ErasimHolmogorin
()
Последнее исправление: ErasimHolmogorin (всего исправлений: 1)
Ответ на: комментарий от ErasimHolmogorin

1) assign – многабукаф :)

2) Ну вот я чуть выше привел пример, когда присваивание слева (имхо) выглядит сильно читаемее: ты сначала обозначаешь с чем работаешь, а ниже, с отступом, последовательность действий

Stil ★★★★★
()
Ответ на: комментарий от Stil

я спрашивал

Потому что так логично и всё для этого уже есть

данные %>% функция %>% функция -> результат

Но ты можешь писать как хочешь.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Тем не менее, некоторое сходство есть.

unikum ★★★★★
()
Ответ на: комментарий от DRVTiny

Не получится. Там есть несколько неприятных скрытых проблем, связанных с использованием пайпов.

unikum ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.