オブジェクトの出力
オブジェクトの内容を出力するとき、print
あるいは cat
関数を利用する。print
はオブジェクトが保存されている状態で出力されるに対して、cat
はオブジェクトをベクトル化してから出力する。
#二次元データ構造
x <- matrix(1:12, ncol = 6, nrow = 2)
# print 省略形
x
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 3 5 7 9 11
## [2,] 2 4 6 8 10 12
# print
print(x)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 3 5 7 9 11
## [2,] 2 4 6 8 10 12
#cat(自動改行しないために、改行コードを \n を付ける)
cat(x, "\n")
## 1 2 3 4 5 6 7 8 9 10 11 12
#リスト型
y <- list(ACC=c(0.909, 0.801), FDR=c(0.012, 0.022))
print(y)
## $ACC
## [1] 0.909 0.801
##
## $FDR
## [1] 0.012 0.022
cat(y) #cat はリスト型をサポートしない
## Error in cat(list(...), file, sep, fill, labels, append) :
## argument 1 (type 'list') cannot be handled by 'cat'
警告文とエラー文
プログラムの進行状況やメタ情報を出力したいときは message
関数を利用する。警告文は warning
関数を利用する。また、エラー文は stop
関数を利用する。message
、warning
を利用するとき、プログラムの進行を妨げない。一方、stop
関数はプログラムを中止させる。
#メッセージ
for (i in 1:3) {
message(paste("Process", i, "is running..."))
}
## Process 1 is running...
## Process 2 is running...
## Process 3 is running...
#警告文
for (i in 1:3) {
warning(paste("warn on step", i))
}
## Warning messages:
## 1: warn on step 1
## 2: warn on step 2
## 3: warn on step 3
#エラー文(for 文は 1 回で終了)
for (i in 1:3) {
stop(paste("error on step", i))
}
## Error: error on step 1
標準出力の抑制方法
message
、warning
関数により出力される文は、suppressMessages
、suppressWarnings
関数によって出力が抑制することができる。
#メッセージの抑制
for (i in 1:3) {
suppressMessages(message(paste("Process", i, "is running...")))
suppressMessages(print(i))
}
# message関数の内容は抑制されて、print関数の内容はそのまま表示
## [1] 1
## [1] 2
## [1] 3
# 警告文の抑制
for (i in 1:3) {
suppressWarnings(warning(paste("suppressWarnings used", i)))
suppressWarnings(print(i))
}
## [1] 1
## [1] 2
## [1] 3
print
や cat
などの関数によって出力される内容を抑制するには capture.output
関数を利用する。
for (i in 1:3) {
capture.output(cat(i))
}