2016-03-18 10 views
0

Rでパッケージpvclustを使用してクラスタ分析を行いました。コマンド「pvpick」で結果のクラスタコンポーネントを抽出し、8つのクラスタを持つリストを作成しました。私はそれぞれの種名(つまり、「SCOと、ちょうどあなたがクラスタパッケージの「cuttree」機能を使用するときに、あなたが得るもののよう、このリストから「という名前のベクトル」を作成する必要があり、私の次の分析のためにリストを名前付きベクトルに変換するR

[[1]] 
[1] "sco.plu" "tra.myo" 

[[2]] 
[1] "sya.pap" "syn.foe" "syn.int" 

[[3]] 
[1] "par.bra" "sya.mic" 

[[4]] 
[1] "bal.cap" "spa.axi" 

[[5]] 
[1] "achi.lin" "gin.cir" "gym.vic" "tha.nat" 

[[6]] 
[1] "alb.vul" "car.bar" "cha.fab" "cyn.vor" "eut.all" "fis.tab" "hae.aur" "hae.ste" "pol.vir" "sel.cru" "spa.fro" 
[12] "tri.letp" "ula.lef" 

[[7]] 
[1] "aux.roc" "car.cry" "car.hip" "car.lat" "clo.chr" "cyn.jam" "ech.nau" "ech.neu" "elo.sau" "hae.par" "hae.plu" "lut.syn" 
[13] "lyc.bat" "ocy.chr" "oli.pal" "opi.ogl" "ort.rub" "rac.can" "rhi.por" "sco.bra" "sco.cav" "sco.reg" 

[[8]] 
[1] "aca.qua" "aca.bah" "aca.chi" "alu.mon" "ani.vir" "arc.rho" "asp.lun" "bag.bag" "bag.mar" "cal.cal" "cal.pen" "cal.pnt" 
[13] "can.pul" "cat.spi" "cen.par" "cha.str" "chi.spi" "con.nob" "cyn.lei" "cyn.mic" "dac.vol" "dec.pun" "dia.aur" "epi.ads" 
[25] "gen.lut" "gen.mac" "het.cru" "hol.cil" "hol.ads" "lac.tri" "lar.bre" "lut.ana" "lut.joc" "mic.fur" "not.gra" "pri.are" 
[37] "pri.pun" "sci.pro" "sel.vom" "sel.bro" 

.plu ")を、そのベクトル内の対応するクラスタ番号を持つ名前として使用します。それは次のようになります。

> memb_average 
aca.qua aca.bah aca.chi achi.lin alb.vul alu.mon ani.vir arc.rho asp.lun aux.roc bag.bag bag.mar bal.cap cal.cal 
     1  1  1  2  3  1  1  1  1  4  1  1  1  1 
cal.pen cal.pnt can.pul car.bar car.cry car.hip car.lat cat.spi cen.par cha.fab cha.str chi.spi clo.chr con.nob 
     1  1  1  3  4  4  4  1  1  4  1  1  4  1 
cyn.jam cyn.lei cyn.mic cyn.vor dac.vol dec.pun dia.aur ech.nau ech.neu elo.sau epi.ads eug.bra eut.all fis.tab 
     5  6  6  3  5  1  1  4  4  5  1  1  4  3 
gen.lut gen.mac gin.cir gym.vic hae.aur hae.par hae.plu hae.ste het.cru hol.cil hol.ads lac.tri lar.bre lut.ana 
     6  6  7  2  4  4  4  4  2  1  1  1  6  1 
lut.joc lut.syn lyc.bat mic.fur not.gra ocy.chr oli.pal opi.ogl ort.rub par.bra pol.vir pri.are pri.pun rac.can 
     1  4  4  1  6  4  5  4  5  1  6  1  5  4 
rhi.por sci.pro sco.bra sco.cav sco.reg sco.plu sel.cru sel.vom sel.bro spa.axi spa.fro sya.mic sya.pap syn.foe 
     4  4  4  4  4  2  4  5  5  3  3  1  2  2 
syn.int tha.nat tra.myo tri.letp ula.lef 
    2  2  2  4  3 

けど - 私は本当にそう、それは非常にシンプルかつエレガントなソリューションを持っているかもしれないと感じていることを改めて持ってする方法を見つけるのに苦労します。

+4

'sco.plu 2が割り当てられているのはなぜ –

+0

あなたのデータをdput'?最初のサブリストに表示されます。 syn.papとtha.natの両方が2の理由は何ですか?それらは異なるサブリストに表示されます。 –

+0

あなたが提供する出力は、あなたが望むように「好き」ですが、**は表示された入力に対応していません**。最初のクラスタであるため、 '' sco.plu "、" tra.myo "'という名前で '1、1'で始まる名前付きベクトルが必要です。次に' 'sya.pap ''という名前の' "syn.foe" "syn.int" 'など、正しい?質問に希望の出力を表示すると(それはすばらしいことです)、探しているものが正確でない場合は、非常に明白にしてください。 – Gregor

答えて

1

サンプルリスト:

x = list(c("a", "b"), "c", c("d", "e", "f")) 

## make vector 
y = rep(seq_along(x), times = sapply(x, length)) 
## name vector 
names(y) = unlist(x) 
## verify result 
y 
# a b c d e f 
# 1 1 2 3 3 3 
+0

しかし、 – Raad

+0

でも非常に気の利いた答えです。スタックの出力が 'stack(setNames(x、seq_along(x)))'にあることを除けば、これは* named *リストで 'stack'と同じことに注意してください。 –

+0

これは本当にトリックでした。補完と同様に、 "member_average"のようなアルファベット順に合成ベクトルを作成することは可能ですか?この場合ソート機能は動作しません。私はいくつかの "注文"ソリューションを試しましたが、あまりにもそれを取得しませんでした。 – Vinifonz

関連する問題