1. 학습
  2. /
  3. 강의
  4. /
  5. R 중급

Connected

연습 문제

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])
  }
})

지침

50 XP

가능한 답변