Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

R4marketing | канал Алексея Селезнёва | Язык R

5 лет назад
Открыть в
​​Множественное присваивание в R Множественное присваивание горячо любимо пользователями Python, оно даёт возможность присвоить одновременно значения сразу нескольким объектам. Этот приём в Python используется например для обмена значений между двумя переменными, не используя при этом третью, временную переменную. Множественное присваивание также иногда называют распаковочным, параллельным или деструктирующим. В базовом R аналога этой операции нет, но как мы помним, в R на любой чих есть готовый пакет, для множественного присваивания можно использовать оператор %<-% из пакета zeallot. Ниже несколько примеров его использования:
# распаковываем список или вектор
c(lat, lng) %<-% list(38.061944, -122.643889)
c(lat, lng) %<-% c(38.061944, -122.643889)

# распаковываем результат выполнения функции
c(min_wt, q1_wt, med_wt, mean_wt, q3_wt, max_wt) %<-% summary(mtcars$wt)

# ещё один пример распаковки функции
coords_list <- function() {
  list(38.061944, -122.643889)
}

c(lat, lng) %<-% coords_list()

# используем в паре с lapply
quartet <- lapply(1:4, function(i) anscombe[, c(i, i + 4)])
c(an1, an2, an3, an4) %<-% lapply(quartet, head, n = 3)

# распаковка вложенных списков
c(a, c(b, d), e) %<-% list("begin", list("middle1", "middle2"), "end")

# распаковка даты
c(y, m, d) %<-% Sys.Date()

# меняем местами значения 
# без использования временной переменной
c(first, last) %<-% c("Ai", "Genly")
c(first, last) %<-% c(last, first)
Ссылки: - все примеры кода подсмотрены в виньетке "Unpacking Assignment". #заметки_по_R