Недавние вопросы, касающиеся использования require versus:: подняли вопрос о том, какие стили программирования используются при программировании в R, и каковы их преимущества/недостатки. Просматривая исходный код или просматривая в сети, вы видите много разных стилей.
Основные тенденции в моем коде:
-
Я много играю с индексами (и вложенными индексами), что иногда приводит к довольно неясному коду, но, как правило, намного быстрее, чем другие решения. например:
x[x < 5] <- 0
вместоx <- ifelse(x < 5, x, 0)
-
Я стараюсь использовать функции, чтобы не перегружать память временными объектами, которые мне нужно очистить. Особенно с функциями, управляющими большими наборами данных, это может быть реальной нагрузкой. например:
y <- cbind(x,as.numeric(factor(x)))
вместоy <- as.numeric(factor(x)) ; z <- cbind(x,y)
-
Я пишу много пользовательских функций, даже если я использую код только один раз, например. сопло. Я считаю, что он сохраняет его более понятным, не создавая объектов, которые могут оставаться лежащими.
-
Я избегаю циклов любой ценой, так как я считаю, что векторизация будет намного чище (и быстрее)
Тем не менее, я заметил, что мнения по этому поводу различаются, и некоторые люди склонны отступать от того, что они назовут моим "Perl" способом программирования (или даже "Lisp", причем все эти скобки, мой код. Я бы не пошел так далеко, хотя).
Что вы считаете хорошей практикой кодирования в R?
Каков ваш стиль программирования и как вы видите его преимущества и недостатки?