Size: a a a

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

2020 November 12

a

aGricolaMZ in R (язык программирования)
Таки пришел ответ с CRAN. Среди прочего там было следующее:

Please do not modify the global environment (e.g. by using <<-) in your
functions. This is not allowed by the CRAN policies.

Все <<- у меня внутри lapply(). Проигнорировать и написать им это? Или я что-то не понимаю?
источник

АК

Артём Клевцов... in R (язык программирования)
aGricolaMZ
Таки пришел ответ с CRAN. Среди прочего там было следующее:

Please do not modify the global environment (e.g. by using <<-) in your
functions. This is not allowed by the CRAN policies.

Все <<- у меня внутри lapply(). Проигнорировать и написать им это? Или я что-то не понимаю?
Исправь на assing(obj, "name", parent.env()) или что-то подобное.
источник

АК

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

a

aGricolaMZ in R (язык программирования)
неужели, у них нет фильтра на assign(), но есть на <<-?
источник

a

aGricolaMZ in R (язык программирования)
Спасибо. Посмотрим
источник

ИП

Иван Поздняков... in R (язык программирования)
Просто <<- это не глобальное присваивание на самом деле
источник

АК

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

ИП

Иван Поздняков... in R (язык программирования)
<<- это присваивание первой попавшейся переменной с таким же названием в иерархии enclosing environments, а если нет такого, то в глобал. Что заметно снижает предсказуемость поведения <<-
источник

a

aGricolaMZ in R (язык программирования)
Иван Поздняков
<<- это присваивание первой попавшейся переменной с таким же названием в иерархии enclosing environments, а если нет такого, то в глобал. Что заметно снижает предсказуемость поведения <<-
воу, это оказывается сложнее чем я думал
источник

S

Stan in R (язык программирования)
Стоп. А как тогда правильно из-под функции эссайгны делать в глобальную среду?
источник

АК

Артём Клевцов... in R (язык программирования)
Stan
Стоп. А как тогда правильно из-под функции эссайгны делать в глобальную среду?
Возвращать значение и присваивать его.
источник

S

Stan in R (язык программирования)
А. Понял
источник

АК

Артём Клевцов... in R (язык программирования)
x <- fun()
источник

O9

OBIDJON 92 in R (язык программирования)
Привет
источник

O9

OBIDJON 92 in R (язык программирования)
Дана строка. Замените в этой строке все появления буквы h на букву H, кроме первого и последнего вхождения.
источник

O9

OBIDJON 92 in R (язык программирования)
Надо  ришит
источник

PD

Pavel Demin in R (язык программирования)
Артём Клевцов
Возвращать значение и присваивать его.
я правильно понимаю, что если мне надо вернуть несколько объектов, то по- хорошему их надо вернуть в одном листе?
я задумался об этом только сейчас, потому что использовал <<- как раз потому, что функция всегда возвращает только один объект, а мне надо было вернуть еще один сопутствующий.
или тоже плохая идея?
источник

PD

Pavel Demin in R (язык программирования)
x = 10
y = 20

# good
m1 = function(x, y) {
   a = x+y
   b = x*y
   res = list(a, b)
   return(res)
}
res_a1 = m1(x, y)[[1]]
res_b1 = m1(x, y)[[2]]

# bad
m2 = function(x, y) {
   a = x+y
   b = x*y
   res_b2 <<- b
   return(a)
}
res_a2 = m2(x, y)
res_b2
источник

АК

Артём Клевцов... in R (язык программирования)
Pavel Demin
я правильно понимаю, что если мне надо вернуть несколько объектов, то по- хорошему их надо вернуть в одном листе?
я задумался об этом только сейчас, потому что использовал <<- как раз потому, что функция всегда возвращает только один объект, а мне надо было вернуть еще один сопутствующий.
или тоже плохая идея?
Тут мы вступаем на территорию субъективного предпочтения. Я считаю, что лучше упихать всё в список. Если надо, отметить его атрибутом класса. Также считаю вполне приемлемым вариант явного создания окружения и присвоения в него. Это окружение, кстати потом можно использовать как список или конвертировать в него.
источник

АК

Артём Клевцов... in R (язык программирования)
Функции с побочными эффектами сложнее контролировать, тестировать, отлаживать. Как минимум потому, что наличие этих эффектов не всегда очевидно. Их ещё надо все найти в коде. При этом взаимодействие с внешними окружениями чревато сюрпризами, т.к. заранее не известно что там в этих окружениях и можно случаться так, что перезаписываются какие-то важные данные. И так далее.
источник