Pull to refresh
33
4
Алексей Селезнёв @selesnow

Руководитель отдела аналитики в Netpeak

Send message

Спасибо за комментарий, рад, что статья оказалась для вас полезной.


А какие задачи планируете решать с помощью 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 использовать русскоязычный для склонения.

Честно говоря так сразу затрудняюсь ответить, попробую найти решение, как найду отпишусь тут.


Первое что в голову пришло просто создать справочник склонений, и просто заменять как текст.

Спасибо, отличная идея. В ближайшее время допишу статью.

Добрый день, подскажу:


library(lubridate)
as.numeric(as.duration("1w 2d 3h"), "hours")

[1] 219

as.duration создаёт объект класса durations. Который с помощью as.numeric легко переводится в число, равное количеству временных отрезков заданное во втором аргументе.

Спасибо за комментарий!


timeperiodsR это мой пакет, я его в сентябре только опубликовал на CRAN.


Зачем я его написал, потому, что мне надоело копипастить часть кода для определения отчётного периода, в 90% случаев это прошлый месяц или прошлая неделя. И я решил для этого создать удобный пакет.


Потом решил, что удобно будет ещё и проверку периода с фильтрацией добавить, и дописал в пакет несколько операторов.


Если интересно вот ссылка на виньетку, на опечатки в ней прошу пока особо внимания не обращать, в следующей редакции всё исправлю.

Спасибо за комментарий.
Я думал над тем, что бы добавить в эту статью информацию про dbplyr. В любом случае, либо добавлю в сюда эту инфу, либо напишу продолжение отдельной статьёй.

Спасибо за комментарий и замечание, убрал из текста «реляционные».
Спасибо за дополнение и комментарий, немного позже попробую добавить эту информацию в статью.
Благодарю, добавлю эту инфу в статью.
Python вообще язык широкого назначения, т.е. он даёт возможность придумать и написать какой нибудь веб сервис например, есть такое.
А для отправки в BigQuery на R есть пакет Викхема bigrquery)

Я на R для этих же целей написал пакет ryandexdirect. При его использовании код намного компактнее т.к. пользователь уже готовые функции использует, ну и у меня токен автоматом сам обновляется при необходимости.


Но в любом случае тоже решение интересное.

Тут в тесте всё запускалось под виндой, но на самом деле как я и написал в статье победа parallel скорее случайность. Тут всё зависело от скорости обработки результатов сервером Яндекса, и от нагрузки на него. Поэтому единственное, что я на самом деле тестом скорости хотел показать, что даже на 4ёх аккаунтах скорость работы двухкратно увеличивается при распараллеливании.

Про `mcapply` я написал для общей инфы. У меня всё на винде развёрто, и `mcapply`я тестил вообще в rstudio.cloud, поэтому в статье даже замер времени выполнения не указывал.

Вам ещё раз спасибо за комментарий к первой части статьи!

Information

Rating
1,069-th
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity