Size: a a a

R (язык программирования)

2021 January 05

АК

Артём Клевцов... in R (язык программирования)
Ivan Struzhkov
вопрос один простой. Хочу функцию которая создаст N обьектов. Например на вход датасет, на выход - линейная регрессия, градиентный бустинг, случайный лес.

Вопрос, как мне без использования <<- получить эти обьекты в глобал энв.
>  на выход - линейная регрессия, градиентный бустинг, случайный лес.
> получить эти обьекты в глобал энв.
По моему мнению, это весьма странные желания.
Ответ по замене <<- дан выше: следует использовать assign с .GlobalEnv.
источник

IS

Ivan Struzhkov in R (язык программирования)
Артём Клевцов
Я придерживаюсь мнения, что функция (как процедура) должно делать что-то одно, но понятным образом. Усложнения можно городить, конечно, но на нижнем уровне должны быть функции, принимающие минимум параметров и возвращающие простые объекты.
подход понятен, для сохранения читаемости и ясности, выполнить три разных функции.
источник

IS

Ivan Struzhkov in R (язык программирования)
Артём Клевцов
>  на выход - линейная регрессия, градиентный бустинг, случайный лес.
> получить эти обьекты в глобал энв.
По моему мнению, это весьма странные желания.
Ответ по замене <<- дан выше: следует использовать assign с .GlobalEnv.
не понимаю почему они странные, если это автоматизация рутинных операций.  
Про ассайн понял, спасибо
источник

АК

Артём Клевцов... in R (язык программирования)
Ivan Struzhkov
подход понятен, для сохранения читаемости и ясности, выполнить три разных функции.
Функция может быть одна и принимать на вход вид/параметры/функцию модели и обернуть её в Map, куда передать желаемое количество моделей. Таким образом мы сохраняем простоту кода.
источник

IS

Ivan Struzhkov in R (язык программирования)
Артём Клевцов
Функция может быть одна и принимать на вход вид/параметры/функцию модели и обернуть её в Map, куда передать желаемое количество моделей. Таким образом мы сохраняем простоту кода.
ну плюс минус такой план и есть. Но результат выполнения функции - n обьектов. Ответ как я понимаю, что их через assign() класть в нужную среду?
источник

PU

Philipp Upravitelev in R (язык программирования)
Ivan Struzhkov
ну плюс минус такой план и есть. Но результат выполнения функции - n обьектов. Ответ как я понимаю, что их через assign() класть в нужную среду?
как вариант. я бы в список клал все же. или атомизировал, чтобы функция возвращала один объект в зависимости от переданного параметра
источник

IS

Ivan Struzhkov in R (язык программирования)
Philipp Upravitelev
как вариант. я бы в список клал все же. или атомизировал, чтобы функция возвращала один объект в зависимости от переданного параметра
подход понятен, спасибо большое!
источник

AS

Alexander Semenov in R (язык программирования)
Что-то не могу я понять философии всех этих рецептов и парснипов: https://youtu.be/amg8bByYwSY
источник

AB

Alexey Burnakov in R (язык программирования)
Артём Клевцов
Использование <<-.
я тоже об этом писал выше, но я написал, что надо аккуратно с этим. Есть мнение, что вообще НЕТ 100%? Интересно ваше мнение
источник

АК

Артём Клевцов... in R (язык программирования)
Alexey Burnakov
я тоже об этом писал выше, но я написал, что надо аккуратно с этим. Есть мнение, что вообще НЕТ 100%? Интересно ваше мнение
Выше было несколько сообщений об этом.
источник

AB

Alexey Burnakov in R (язык программирования)
Артём Клевцов
Поиск переменной для присвоения происходит рекурсивно во всех родительских окружениях. Это может приводить к разным сложно отлаживаемым ситуациям.
хороший пункт.
источник

AB

Alexey Burnakov in R (язык программирования)
Снова про <<-. За последние пару лет только один раз использовал, потому что не придумал, как в lapply накручивать счетчик (кстати, можно как-то?). Сейчас, после обсуждения, еще раз посмотрел код и понял, что выпилю я это и будет разумно заменить на for, чтобы убрать superassigment. Такой пример

col_n <- 0
       
probs <-
 lapply(
   preds[, preds_cnames, with = F]
   , function(x)
   {
     
     col_n <<- col_n + 1
     
     data.table(....)
     
   }
 )
источник

ВП

Владимир Попукайло... in R (язык программирования)
Из примера не очень понятно, зачем там вообще счётчик
источник

AB

Alexey Burnakov in R (язык программирования)
Владимир Попукайло
Из примера не очень понятно, зачем там вообще счётчик
Да, согласен ). Я вообще это перепишу, появилась идея. В текущем виде некоторые поля DT (с 1 по 10, скажем) обрабатываются одним способом, а с 11 по 20 другим.
источник

AB

Alexey Burnakov in R (язык программирования)
Но я упрощу все, может, два lapply, или, даже, один.
источник

AB

Alexey Burnakov in R (язык программирования)
Владимир Попукайло
Из примера не очень понятно, зачем там вообще счётчик
Вспомнил логику!) Голова ещё праздничная)
источник

AB

Alexey Burnakov in R (язык программирования)
Там сложненькая ситуация была и я долго мудрил: заголовки полей отражают числа, пусть от -10 до 10. Строк несколько сот тысяч. Есть особое поле (добавляется в конце) там вектор чисел от -10 до 10.
источник

AB

Alexey Burnakov in R (язык программирования)
Задача была: взять аналог rowSums, но чтобы в каждой строке суммировались те поля, чей заголовок-число меньше числа в особой колонке.
источник

AB

Alexey Burnakov in R (язык программирования)
И ходить по строкам в цикле - ненене
источник

AB

Alexey Burnakov in R (язык программирования)
Очень долго!
источник