`levels< -`(Что это за колдовство?

In ответ на другой вопрос, @Marek опубликовал следующее решение: https://stackoverflow.com/a/10432263/636656

dat <- structure(list(product = c(11L, 11L, 9L, 9L, 6L, 1L, 11L, 5L, 
                                  7L, 11L, 5L, 11L, 4L, 3L, 10L, 7L, 10L, 5L, 9L, 8L)),.Names = "product", row.names = c(NA, -20L), class = "data.frame")

`levels<-`(
  factor(dat$product),
  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
  )

Что выдает на выходе:

 [1] Generic Generic Bayer   Bayer   Advil   Tylenol Generic Advil   Bayer   Generic Advil   Generic Advil   Tylenol
[15] Generic Bayer   Generic Advil   Bayer   Bayer  

Это просто распечатка вектора, так что для его сохранения можно сделать еще более запутанную:

res <- `levels<-`(
  factor(dat$product),
  list(Tylenol=1:3, Advil=4:6, Bayer=7:9, Generic=10:12)
  )

Очевидно, это какой-то вызов функции уровней, но я понятия не имею что здесь делается. Как называется этот вид колдовства и как увеличить свои магические способности в этой области?

109
задан Community 23 May 2017 в 11:53
поделиться