lapply와 익명 함수
직접 함수를 작성하고, 그것을 lapply() 안에서 활용할 수 있게 되셨군요! 정말 대단한 성취입니다! 그런데 한 번만 사용할 함수를 매번 정의하는 건 다소 번거롭지 않을까요? 이럴 때 R의 익명 함수(anonymous function)를 활용하면 편리합니다.
앞서 배운 것처럼, R에서 함수는 그 자체로 하나의 객체입니다. 즉, 함수가 반드시 이름에 바인딩될 필요는 없습니다. 함수를 만들 때 할당 연산자로 이름을 붙일 수도 있지만, 이름 없이 사용하는 것도 완전히 가능합니다. 이것이 바로 익명 함수입니다.
# Named function
triple <- function(x) { 3 * x }
# Anonymous function with same implementation
function(x) { 3 * x }
# Use anonymous function inside lapply()
lapply(list(1,2,3), function(x) { 3 * x })
split_low는 이미 정의되어 있습니다.
이 연습은 강의의 일부입니다
중급 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)