Спасибо за комментарий, рад, что статья оказалась для вас полезной.
А какие задачи планируете решать с помощью R, в какой сфере работаете? Академические исследования, биоинформатика, интернет — маркетинг, или ещё что-то другое?
Спасибо за комментарий, циклы в R, да и в Python вроде тоже, довольно медленные.
Попробуйте вместо циклов в R использовать что то из семества функций apply(), sapply(), lapply(), vapply(). Или пакет purrr.
В pandas тоже есть аналоги, apply(), map(), applymap().
И в теле цикла не используйте операции вертикального объединения типа rbind() и bind_rows(), лучше результат каждой итерации добавлять в заранее определённый список, и по завершению работы цикла привести его уже с помощью того же bind_rows() в табличный вид.
Спасибо.
Про S4 и R6 я отдельную публикацию планирую, просто пока руки не дошли.
Цель этой статьи была упростить миграцию между Python и К в плане синтаксиса, т.е. не столько сравнение языков и их производительности, как миграция между ними.
Можно попробовать тестово через планировщик запустить и принтов добавить, потом глянуть лог как он отображает имена месяцев / дней и т.д..
В принципе проблему кодировки можно решить, например в начало скрипта добавить Sys.setlocale("LC_CTYPE", "russian").
Или на худой конец при сравнение кодировать через iconv().
Я не особо силён в английском, но у них вроде нет склонений, поэтому и сомневаюсь, что какими то стандартными способами это можно в R реализовать, разве что какой то API использовать русскоязычный для склонения.
as.duration создаёт объект класса durations. Который с помощью as.numeric легко переводится в число, равное количеству временных отрезков заданное во втором аргументе.
timeperiodsR это мой пакет, я его в сентябре только опубликовал на CRAN.
Зачем я его написал, потому, что мне надоело копипастить часть кода для определения отчётного периода, в 90% случаев это прошлый месяц или прошлая неделя. И я решил для этого создать удобный пакет.
Потом решил, что удобно будет ещё и проверку периода с фильтрацией добавить, и дописал в пакет несколько операторов.
Если интересно вот ссылка на виньетку, на опечатки в ней прошу пока особо внимания не обращать, в следующей редакции всё исправлю.
Спасибо за комментарий.
Я думал над тем, что бы добавить в эту статью информацию про dbplyr. В любом случае, либо добавлю в сюда эту инфу, либо напишу продолжение отдельной статьёй.
Python вообще язык широкого назначения, т.е. он даёт возможность придумать и написать какой нибудь веб сервис например, есть такое.
А для отправки в BigQuery на R есть пакет Викхема bigrquery)
Я на R для этих же целей написал пакет ryandexdirect. При его использовании код намного компактнее т.к. пользователь уже готовые функции использует, ну и у меня токен автоматом сам обновляется при необходимости.
Тут в тесте всё запускалось под виндой, но на самом деле как я и написал в статье победа parallel скорее случайность. Тут всё зависело от скорости обработки результатов сервером Яндекса, и от нагрузки на него. Поэтому единственное, что я на самом деле тестом скорости хотел показать, что даже на 4ёх аккаунтах скорость работы двухкратно увеличивается при распараллеливании.
Про `mcapply` я написал для общей инфы. У меня всё на винде развёрто, и `mcapply`я тестил вообще в rstudio.cloud, поэтому в статье даже замер времени выполнения не указывал.
Вам ещё раз спасибо за комментарий к первой части статьи!
Спасибо за комментарий, рад, что статья оказалась для вас полезной.
А какие задачи планируете решать с помощью R, в какой сфере работаете? Академические исследования, биоинформатика, интернет — маркетинг, или ещё что-то другое?
Спасибо за комментарий, циклы в R, да и в Python вроде тоже, довольно медленные.
Попробуйте вместо циклов в R использовать что то из семества функций
apply()
,sapply()
,lapply()
,vapply()
. Или пакетpurrr
.В
pandas
тоже есть аналоги,apply()
,map()
,applymap()
.И в теле цикла не используйте операции вертикального объединения типа
rbind()
иbind_rows()
, лучше результат каждой итерации добавлять в заранее определённый список, и по завершению работы цикла привести его уже с помощью того жеbind_rows()
в табличный вид.Думаю такой подход ускорит ваш код.
Спасибо за комментарий.
Согласен, подредактирую пункт про ООП в статье.
Спасибо.
Про S4 и R6 я отдельную публикацию планирую, просто пока руки не дошли.
Цель этой статьи была упростить миграцию между Python и К в плане синтаксиса, т.е. не столько сравнение языков и их производительности, как миграция между ними.
Благодарю за комментарий. И отдельное спасибо за то, что напомнили про индексы, сейчас добавлю эту информацию в статью.
Можно попробовать тестово через планировщик запустить и принтов добавить, потом глянуть лог как он отображает имена месяцев / дней и т.д..
В принципе проблему кодировки можно решить, например в начало скрипта добавить
Sys.setlocale("LC_CTYPE", "russian")
.Или на худой конец при сравнение кодировать через iconv().
Я не особо силён в английском, но у них вроде нет склонений, поэтому и сомневаюсь, что какими то стандартными способами это можно в R реализовать, разве что какой то API использовать русскоязычный для склонения.
Честно говоря так сразу затрудняюсь ответить, попробую найти решение, как найду отпишусь тут.
Первое что в голову пришло просто создать справочник склонений, и просто заменять как текст.
Спасибо, отличная идея. В ближайшее время допишу статью.
Добрый день, подскажу:
as.duration
создаёт объект класса durations. Который с помощьюas.numeric
легко переводится в число, равное количеству временных отрезков заданное во втором аргументе.Спасибо за комментарий!
timeperiodsR
это мой пакет, я его в сентябре только опубликовал на CRAN.Зачем я его написал, потому, что мне надоело копипастить часть кода для определения отчётного периода, в 90% случаев это прошлый месяц или прошлая неделя. И я решил для этого создать удобный пакет.
Потом решил, что удобно будет ещё и проверку периода с фильтрацией добавить, и дописал в пакет несколько операторов.
Если интересно вот ссылка на виньетку, на опечатки в ней прошу пока особо внимания не обращать, в следующей редакции всё исправлю.
Спасибо за комментарий.
Я думал над тем, что бы добавить в эту статью информацию про
dbplyr
. В любом случае, либо добавлю в сюда эту инфу, либо напишу продолжение отдельной статьёй.А для отправки в BigQuery на R есть пакет Викхема bigrquery)
Я на R для этих же целей написал пакет ryandexdirect. При его использовании код намного компактнее т.к. пользователь уже готовые функции использует, ну и у меня токен автоматом сам обновляется при необходимости.
Но в любом случае тоже решение интересное.
Про `mcapply` я написал для общей инфы. У меня всё на винде развёрто, и `mcapply`я тестил вообще в rstudio.cloud, поэтому в статье даже замер времени выполнения не указывал.
Вам ещё раз спасибо за комментарий к первой части статьи!