더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.