x <- read.table("x.txt",header=TRUE,sep="¥t",row.names=1)
⇒getwd()で今いる作業フォルダを確認してその位置からのx.txtを使います。
⇒ファイルの1行目がデータではなくサンプル名等の場合、
header=TRUE とし、1行目からデータが始まっている場合、
header=FALSE と指定する。
⇒sep=" "の部分で、読み込むデータファイルが何で区切られている
のか指定する。
⇒ファイルの1列目がデータではなく遺伝子名等の場合、
row.names=1 とし、1列目からデータが始まっている場合、
特に何も記述しない。
(もちろんR内でtableを自分で作っている場合には、この手順は必要ないです。)
* 読み込んだデータを、numericクラスに変換する。数値に変換する必要があるためです。
x_numeric <- apply(x,c(1:2),as.numeric)
⇒行列の形をしたデータの全体をnumericにしたい場合、
apply関数の2番目の要素はc(1:2)とし、
全体に作用させたい関数をapply関数の3番目の要素とする。このapply関数はよく使います。
例
> x_numeric
a b c d
weight 55 60 42 70
height 150 173 148 180
body fat 28 12 22 15
*データ間距離を計算
x_euclid <- dist(x_numeric,method="euclid")
⇒numericに変換したデータ間のユークリッド距離を
求め、距離行列をx_euclidに代入している。
method=" "の部分は"euclid","manhattan","minkovski","canberra"が指
定できる。
*クラスタリングの方法を選択
x_ward_hclust <- hclust(x_euclid,method="ward")
⇒method=" "の部分は
"single","complete","average","centroid","ward"が指定できる。
(ちなみにここで
plclust(x_ward_hclust,hang=-1)
とするとデンドログラムがかけます。)
** ヒートマップの作成
heatmap(x_numeric,hclustfun= function(x_euclid) hclust(x_euclid,method="
ward"))
⇒numericとはxをnumericクラスに変換したデータ
⇒x_euclidとはxをユークリッド距離行列に変換したデータ
⇒function()とは関数の定義で、hclustfunのパッケージ内の
ある関数を呼び出している。ここでは関数hclustをよびだして、
xのユークリッド距離行x_euclidを引数としている。
(もっときれいな書き方があったようにも思うのですが、ちょっと思い出せなく
てすみません;;)
ちなみに
* 行と列のクラスタリング方法を変えたい場合
例として行をaverage法、列をward法でクラスタリングする
x_average<-hclust(x_euclid,method="average")
x_row<-as.dendrogram(x_average)
heatmap(x_numeric, Rowv=x_row, hclustfun=function(x_euclid) hclust
(x_euclid,method="ward"))
⇒x_rowはx_euclidをaverage法でクラスタリングしたデータ
⇒heatmapにおいてRowvで行のデンドログラムを指定する
⇒列のクラスタリング法は heatmap()のhclust()で指定する。
です。
また保存する場合は
* 保存するファイルを作成する
pdf("___.pdf",paper="a4r")#ファイル名と大きさを指定
heatmap(x_numeric,hclustfun= function(x_euclid) hclust(x_euclid,method="
ward"))
dev.off()
0 件のコメント:
コメントを投稿