f <- matrix(c(2,3,1,4,3,5,4,3,2,1,2,4), nrow=3, byrow=TRUE)この例題に,行名と列名を,以下のように与えたとします。
result <- tenkai(f) # 結果はリストで返される
x <- result$x
y <- result$y
x
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3
y
[1] 1 1 2 2 2 3 4 4 4 4 1 1 1 2 2 2 2 2 3 3 3 3 4 4 4 1 1 2 3 3 4 4 4 4
rownames(f) <- c("r1", "r2", "r3")上記のx,yの値を,数字ではなく,行名と列名で返したいと思います。
colnames(f) <- c("c1", "c2", "c3", "c4")
No.22148 Re: R 分割表から元データを再現 【青木繁伸】 2016/09/22(Thu) 21:15
せっかく与えた行名と列名を使うなら,rownames(f)[x]ただ,tenkai が何をやっているのかを見て,単に r, c で始まる名前でよいならば,行名,列名を与えてやる必要はなくて,
colnames(f)[y]paste("r", rep(row(f), f), sep="")で十分。これを関数にしてやると面倒くささがなくなる。
paste("c", rep(col(f), f), sep="")
paste0 が使えるならば,以下のように。paste0("r", rep(row(f), f))
paste0("c", rep(col(f), f))
No.22149 【御礼】 Re: R 分割表から元データを再現 【明石】 2016/09/23(Fri) 08:45
青木先生,
いつもお世話になり,ありがとうございます,明石と申します。
早々にご教示いただき,誠にありがとうございました。
今回も助けていただきました。
私も自分で,以下のような方法を考えてみました(途中で断念)。
・x,y からデータフレームを作成し,
・x,y が返す数字を,因子の水準番号と見なして,
因子の水準に対応する名前(ここでが,行と列の名前)を与えて,
・最後に,数値を文字列表示に変換する
ご教示いただき,誠にありがとうございました。
心から御礼を申し上げます。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る