시작하기무료로 시작하기

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)
코드 편집 및 실행