lapply и анонимные функции
Создавать собственные функции и использовать их внутри lapply() — это настоящее достижение! Однако определять функцию ради единственного использования — излишество, не правда ли? Именно для таких случаев в R предусмотрены так называемые анонимные функции.
Ранее вы узнали, что функции в R являются полноценными объектами. Это означает, что они не привязаны к имени автоматически. При создании функции можно использовать оператор присваивания, чтобы дать ей имя. Но также совершенно допустимо обойтись без имени — такая функция называется анонимной:
# Именованная функция
triple <- function(x) { 3 * x }
# Анонимная функция с той же реализацией
function(x) { 3 * x }
# Использование анонимной функции внутри lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low уже определён для вас.
Это упражнение является частью курса
Intermediate R
Инструкции к упражнению
- Преобразуйте первый вызов
lapply()так, чтобы он использовал анонимную функцию с той же логикой. - Аналогичным образом замените второй вызов
lapplyна анонимную версию функцииselect_second(). - Удалите оба определения функций —
select_first()иselect_second(), так как они больше не нужны.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# split_low has been created for you
split_low
# Transform: use anonymous function inside lapply
select_first <- function(x) {
x[1]
}
names <- lapply(split_low, select_first)
# Transform: use anonymous function inside lapply
select_second <- function(x) {
x[2]
}
years <- lapply(split_low, select_second)