시작하기무료로 시작하기

NULL을 반환하는 함수 적용하기

지금까지의 연습 문제에서는 벡터나 리스트에 적용한 함수가 항상 유의미한 결과를 반환한다고 가정했습니다. 예를 들어, tolower() 함수는 문자열을 소문자로 변환한 값을 반환합니다. 하지만 항상 그런 것은 아닙니다. 리스트의 각 요소 구조를 출력하고 싶다고 가정해 봅시다. 이때 str() 함수를 사용할 수 있습니다. 이 함수는 NULL를 반환합니다:

lapply(list(1, "a", TRUE), str)

이 코드를 실행하면 입력 리스트와 동일한 크기의 리스트가 반환되며, 모든 NULL 값이 채워집니다. 반면에 str(TRUE) 을 단독으로 실행하면 논리형의 구조만 콘솔에 출력될 뿐, NULL은 출력되지 않습니다. 이는 str()이 내부적으로 invisible()을 사용하기 때문입니다. NULL인 이 반환값의 보이지 않는 복사본을 반환하므로, str()의 결과를 변수에 할당하지 않으면 출력되지 않습니다.

다음 코드를 실행하면 어떤 결과가 반환될까요? (split_low는 워크스페이스에 이미 준비되어 있습니다.) 콘솔에서 바로 실행하기 전에 먼저 결과를 직접 추론해 보세요!

lapply(split_low, function(x) {
  if (nchar(x[1]) > 5) {
    return(NULL)
  } else {
    return(x[2])
  }
})

이 연습은 강의의 일부입니다

중급 R

강의 보기

실습형 인터랙티브 연습문제

이론을 실습으로 바꾸는 인터랙티브 연습 중 하나를 만나보세요

연습 시작