print()

    print( )는 주어진 객체를 화면에 출력한다. 따라서 print( ) 문을 코드 중간 중간에 삽입해 변수에 할당된 값을 출력하거나 현재 어느 부분의 코드가 실행 중인지를 쉽게 확인할 수 있다. 이때 객체를 문자열로 편리하게 변환해주는 paste( ) 함수가 유용하게 사용된다. 다음 표에 paste( )에 대해 정리했다.

    표 5-20 문자열 연결 함수

    paste : 벡터를 문자열들로 변환한 후 연결한다.

    paste(
      ...,           # R 객체
      sep=" ",       # 객체들을 서로 연결할 때 사용하는 구분자
      collapse=NULL  # 연결된 객체들을 하나의 문자열로 만들 때 사용하는 구분자
    )

    반환 값은 문자열 벡터 또는 문자열이다.

    paste0 : 벡터를 문자열들로 변환한 후 연결한다. paste( )와 달리 sep가 항상 빈 문자열이다.

    paste0(
      ...,           # R 객체
      collapse=NULL  # 연결된 객체들을 하나의 문자열로 만들 때 사용하는 구분자
    )

    반환 값은 문자열 벡터 또는 문자열이다.

    paste( )는 인자로 주어진 값들을 하나의 문자열로 합쳐 출력한다. 다음 예를 보자.

    > paste('a', 1, 2, 'b', 'c')
    [1] "a 1 2 b c"
    

    문자열 “A”(문자열 “A”를 저장한 길이 1인 벡터로 취급)와 1 ~ 6까지의 숫자를 저장한 길이 6인 벡터를 인자로 주면 “A”를 반복하여 사용하면서 두 벡터를 붙인다.

    > paste("A", 1:6)
    [1] "A 1" "A 2" "A 3" "A 4" "A 5" "A 6"
    

    sep는 여러 인자를 문자열로 붙일 때 사용하는 구분자다. 따라서 paste( )에 sep=““를 지정하면 “A”와 1:6 간에 공백이 사라진다. sep를 지정하는 대신 paste0( )을 호출해도 마찬가지 결과를 얻는다.

    > paste("A", 1:6, sep="")
    [1] "A1" "A2" "A3" "A4" "A5" "A6"
    
    > paste0("A", 1:6)
    [1] "A1" "A2" "A3" "A4" "A5" "A6"
    

    collapse는 결과를 하나의 문자열로 만들 때 사용하는 구분자다. 다음은 collapse=“,“를 지정해 “A1”, “A2”, …, “A6”를 “,“로 연결한 하나의 문자열로 만든 예다.

    > paste("A", 1:6, sep="", collapse=",")
    [1] "A1,A2,A3,A4,A5,A6"
    

    다음 코드는 피보나치 수열을 구하는 함수가 잘 동작하는지 확인해보기 위하여 코드 사이에 print( )를 넣은 예다.

    > fibo <- function(n) {
    +   if (n == 1 || n == 2) {
    +     print("base case")
    +     return(1)
    +   }
    +   print(paste0("fibo(", n - 1, ") + fibo(", n - 2, ")"))
    +   return(fibo(n - 1) + fibo(n - 2))
    + }
    
    > fibo(1)
    [1] "base case"
    [1] 1
    
    > fibo(2)
    [1] "base case"
    [1] 1
    
    > fibo(3)
    [1] "fibo(2) + fibo(1)"
    [1] "base case"
    [1] "base case"
    [1] 2
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.