본문 바로가기

데이터분석/R

[R 기초]print 관련 정리(print, paste, cat, sprintf 함수) in r

1. 하나의 변수 출력하기 - print() 

2. 2개 이상의 변수 출력하기 - paste(), cat()

3. 문자열 사이에 여러 형태의 값 넣어서 출력하기 - sprintf()

4. list를 table 형태로 출력하기 - unlist(), as.data.frame()

 


 

 

1. 하나의 변수 출력하기 - print() 

 

print() 함수에 하나의 변수를 넣으면 그 변수를 출력해주지만, 2개 이상의 변수를 넣으면 오류가 뜹니다.

> num <- 3.14
> print(num)
[1] 3.14
> print("변수 num의 type: ", typeof(num))
Error in print.default("변수 num의 type: ", typeof(num)) : 
  invalid printing digits -2147483648
In addition: Warning message:
In print.default("변수 num의 type: ", typeof(num)) :
  NAs introduced by coercion

 

 

2. 2개 이상의 변수 출력하기 - paste(), cat()

 

2개 이상의 변수를 출력하기 위하여 paste() 함수를 사용합니다. paste() 함수를 이용하여 각 변수들을 하나의 문자열(string)로 연결한 뒤 print() 함수를 이용합니다. 또는, cat() 함수를 이용하면 여러 개의 변수를 붙여서 출력할 수 있습니다.

> paste(1,2,3)
[1] "1 2 3"
> paste("1","2","3")
[1] "1 2 3"

> length(print(paste("변수 num의 type: ", typeof(num))))
[1] "변수 num의 type:  double"
[1] 1
> cat("변수 num의 class: ", class(num))
변수 num의 class:  numeric

 

paste() 함수에 여러개의 변수를 넣으면 1개의 문자열로 출력하지만, 벡터를 할당한 변수를 넣으면 그 벡터의 원소 개수만큼의 문자열로 출력합니다. 이를 하나의 문자열로 출력하기 위해선 paste() 함수의 collapse 옵션을 사용합니다. collapse="," 옵션을 주면 각 원소들 사이에 ,를 삽입하여 하나의 문자열로 연결합니다.

> fruits <- c("apple", "grape", "orange")
> length(print(paste(fruits)))
[1] "apple"  "grape"  "orange"
[1] 3
> print(paste(fruits, collapse=","))
[1] "apple,grape,orange"

 

 

3. 문자열 사이에 여러 형태의 값 넣어서 출력하기 - sprintf()

 

sprintf() 함수를 이용하면 문자열 사이에 문자, 숫자 등을 삽입하여 출력할 수 있습니다. 첫번째로 출력할 문자열을 넣고, 문자열을 넣을 위치에 %s, 정수를 넣을 위치에 %d, 실수를 넣을 위치에 %f를 넣습니다. 실수를 소수 (n+1) 번째 자릿수에서 반올림하여 소수 n자릿수로 출력하고 싶다면 %.nf를, 정수를 n칸 중 오른쪽 정렬하여 출력하고 싶다면 %nd를 넣습니다.

 

> sprintf("문자는 %s, 정수는 %d, 실수는 %f, %.2f는 반올림하여 소수 두자리수로 출력, %3d은 3칸중 오른쪽 정렬이다.", "string", 123, 3.141, 2.4991, 3)
[1] "문자는 string, 정수는 123, 실수는 3.141000, 2.50는 반올림하여 소수 두자리수로 출력,   3은 3칸중 오른쪽 정렬이다."

 

 

4. list를 table 형태로 출력하기 - unlist(), as.data.frame()

 

마지막으로, r에서 list를 출력하면 table이 아닌 형태로 출력이 되는데, 이를 표 형태로 출력하기 위해서 as.data.frame() 함수를 이용하거나 unlist() 함수를 이용하여 print 합니다.

> weight <- list(kim=44, lee=56, jang=73) #python의 dictionary
> print(weight)
$kim
[1] 44

$lee
[1] 56

$jang
[1] 73

> print(as.data.frame(weight))
  kim lee jang
1  44  56   73

> print(unlist(weight))
 kim  lee jang 
  44   56   73