Який у мене тип?
Щойно ви побачили чотири функції, які допомагають визначити, з яким типом змінної ви працюєте. class() (docs) і typeof() (docs) є важливими й часто знадобляться. mode() (docs) і storage.mode() (docs) переважно існують для сумісності з мовою програмування S.
У цій вправі ви подивитеся, що повертають ці функції для різних типів змінних. Є й рідкісніші типи, з якими ви могли ще не зустрічатися.
array(docs): Узагальнення матриці з довільною кількістю вимірів.formula(docs): Використовується функціями моделювання та візуалізації, щоб визначати зв'язки між змінними.
Також зверніть увагу, що в R є три різновиди функцій.
- Більшість функцій, з якими ви працюватимете, — це
closure. - Декілька важливих функцій, як-от
length()(docs), відомі якbuiltin-функції; вони використовують спеціальний механізм обчислення, щоб працювати швидше. - Мовні конструкції, такі як
if(docs) іwhile(docs), — теж функції! Їх називаютьspecial-функціями.
Ця вправа є частиною курсу
Об'єктно-орієнтоване програмування з S3 та R6 в R
Інструкції до вправи
Функція type_info() уже визначена у вашому робочому середовищі та повертає class(), mode(), typeof() і storage.mode() свого аргументу. (Наберіть type_info у консолі, щоб подивитися, як вона працює.)
- Створіть
some_vars— список прикладних об'єктів, наданих в редакторі. - Скористайтеся
lapply, щоб пройтися по елементахsome_vars, викликаючиtype_info()для кожного з прикладів, щоб дослідити їхній тип.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Look at the definition of type_info()
type_info
# Create list of example variables
some_vars <- list(
an_integer_vector = rpois(24, lambda = 5),
a_numeric_vector = rbeta(24, shape1 = 1, shape2 = 1),
an_integer_array = array(rbinom(24, size = 8, prob = 0.5), dim = c(2, 3, 4)),
a_numeric_array = array(rweibull(24, shape = 1, scale = 1), dim = c(2, 3, 4)),
a_data_frame = data.frame(int = rgeom(24, prob = 0.5), num = runif(24)),
a_factor = factor(month.abb),
a_formula = y ~ x,
a_closure_function = mean,
a_builtin_function = length,
a_special_function = `if`
)
# Loop over some_vars calling type_info() on each element to explore them
___