R で 変数の名前と値をまとめて表示する Print 関数を作った
変数の名前と値をペアで表示するだけのデバッグ用関数。変数だけでなく、ベクトルや配列、文字列、関数、データフレームにも対応しています。
引数の数は可変長なので、いくつでも大丈夫です。
Print <- function(...){ key <- as.list(substitute(list(...)))[-1L] val <- list(...) mapply( function(k, v){ cat(k, "= ") if(!is.matrix(v) && (is.logical(v) || is.numeric(v) || is.complex(v) || is.character(v))){ cat(v, "\n") } else{ cat("\n"); print(v); cat("\n") } }, key, val) cat("\n") }
使い方 その 1
基本的な使い方は、このようになります。
> a<-1; b<-2; c<-3; d<-4; # 4 つの変数 > Print(a, b, c, d) a = 1 b = 2 c = 3 d = 4
使い方 その 2
引数の型がごちゃ混ぜでも大丈夫です。
> bool <- TRUE # 論理値 > num <- 1 # 整数 > cpl <- 1+1i; # 複素数 > str <- "Hello." # 文字列 > vec <- 1:10 # ベクトル > mat <- matrix(c(1, 2, 3), 3, 2) # 2×3 の行列 > Print(bool, num, cpl, str, vec, mat, plot, iris) bool = TRUE num = 1 cpl = 1+1i str = Hello. vec = 1 2 3 4 5 6 7 8 9 10 mat = [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 3 3 plot = function (x, y, ...) { if (is.function(x) && is.null(attr(x, "class"))) { … 省略 … iris = Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa … 省略 …
毎回 Print 関数を入力するのが面倒な人は .RProfile に書いておくと良いでしょう。
(追記 2010/02/01 22:00)
Twitter 経由で @syou6162 先生からアドバイスいただいたので、大幅に修正した。id:syou6162++