行列やデータフレームをタブ区切りで出力     Last modified: Dec 09, 2004

 行列やデータフレームをコンソール画面に表示し,それをカット&ペーストで他のアプリケーションに持っていくとき,R の標準の出力では行番号や列番号がついてしまって不都合な場合がある。

例
> dat <- matrix(1:12, byrow=TRUE, ncol=3)
> dat
     [,1] [,2] [,3]
[1,]    1    2    3	# 4 行 3 列の本体部分だけがほしいのに
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
 そのようなときに,次に示すような関数を作っておくと便利かもしれない。
 関数を定義後,ワークスペースに保存しておくと,R を始める前に毎回これを読んでくれるので以後は関数の定義をすることなくいつでも使える。
data.list 関数の定義

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/data_list.R", encoding="euc-jp")

# 行名(行番号)なしでデータフレーム(行列)を表示する
data.list <- function(d)             # データフレームまたは行列
{
        cat(paste(t(d), c(rep("\t", ncol(d)-1), "\n")), sep="")
}


data.list2 関数の定義

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/data_list2.R", encoding="euc-jp")

# 行名(行番号)なしでデータフレーム(行列)を表示する
data.list2 <- function(d)            # データフレームまたは行列
{
        invisible(apply(d, 1, function(i) cat(paste(i, c(rep("\t", length(i)-1), "\n")))))
}


data.list3 関数の定義

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/data_list3.R", encoding="euc-jp")

# 行名(行番号)なしでデータフレーム(行列)を表示する
data.list3 <- function(      d,              # データフレームまたは行列
                        num = FALSE)    # 行番号をつけるかどうか
{
        nv <- ncol(d)
        n <- nrow(d)
        for (i in 1:n) {
                if (num) cat(i, "\t")
                for (j in 1:(nv-1)) {
                        cat(d[i, j], "\t")
                }
                cat(d[i, j+1], "\n")
        }
}


例
> data.list(dat)
1 	2 	3
4 	5 	6
7 	8 	9
10 	11 	12
> data.list3(dat, num=TRUE)	# num=TRUE を指定すると,行番号をつけて表示する
1 	1 	2 	3
2 	4 	5 	6
3 	7 	8 	9
4 	10 	11 	12
> dat2 <- data.frame(dat)	# データフレームの場合にも同様な表示になる
> dat2
  X1 X2 X3
1  1  2  3
2  4  5  6
3  7  8  9
4 10 11 12
> data.list(dat2)
1 	2 	3
4 	5 	6
7 	8 	9
10 	11 	12

> data.list2(dat)
1 	 2 	 3 
4 	 5 	 6 
7 	 8 	 9 
10 	 11 	 12 
data.list2 と data.list3 関数は,実数値の場合には全桁が表示される。また,一行に収まらない場合には複数行にわたるが,実際には改行コードは行末にしか入っていないので,該当部分をコピーして Excel にペーストすると,ちゃんとセルに数値が入る。


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh