1

私が作成した樹状図から

hc<-hclust(kk)
hcd<-as.dendrogram(hc)

私はサブブランチを選びました

k=hcd[[2]][[2]][[2]][[2]][[2]][[2]][[2]][1]

単純に k を表示すると、次のようになります。

> k
[[1]]
[[1]][[1]]
[1] 243
attr(,"label")
[1] "NAfrica_002"
attr(,"members")
[1] 1
attr(,"height")
[1] 0
attr(,"leaf")
[1] TRUE

[[1]][[2]]
[1] 257
attr(,"label")
[1] "NAfrica_016"
attr(,"members")
[1] 1
attr(,"height")
[1] 0
attr(,"leaf")
[1] TRUE

attr(,"members")
[1] 2
attr(,"midpoint")
[1] 0.5
attr(,"height")
[1] 37

たとえば、「midpoint」属性や 2 番目の「label」属性にアクセスするにはどうすればよいですか?

(ここで正しい用語を使用したいと思います)

私は次のようなことを試しました

k$midpoint
attr(k,"midpoint")

しかし、どちらも「NULL」を返しました。

質問番号 2 で申し訳ありません: 属性「中間点」の後に「ラベル」属性を追加するにはどうすればよいですか?

4

2 に答える 2

1

あなたkはまだ 1 層深く埋もれています。リストの最初の要素に属性が設定されていますk

 attributes(k[[1]]) # Display attributes
 attributes(k[[1]])$label # Access attributes
 attributes(k[[1]])$label <- 'new' # Change attribute

または、次を使用できますattr

attr(k[[1]],'label') # Display attribute
于 2014-10-07T16:11:15.083 に答える
0

前の回答のように、パラメータを手動で変更できます。これの問題点は、何度もやりたいときに手動で行うのは効率的ではないということです。また、パラメーターを変更するのは簡単ですが、その変更に基づくアクションを実装しないため、その変更は他の機能に反映されない場合があります (プログラムする必要があります)。

特定の質問については、通常、表示する属性によって異なります。"midpoint" の場合は、 dendextendパッケージget_nodes_attrの "midpoint" パラメータを指定して関数を使用します。

# install.packages("dendextend")
library(dendextend)

dend <- as.dendrogram(hclust(dist(USArrests[1:5,])))
# Like: 
# dend <- USArrests[1:5,] %>% dist %>% hclust %>% as.dendrogram

# midpoint for all nodes
get_nodes_attr(dend, "midpoint")

そして、あなたはこれを得る:

[1] 1.25   NA 1.50 0.50   NA   NA 0.50   NA   NA

属性も変更するには、パッケージのさまざまな割り当て関数を使用できます: assign_values_to_leaves_nodeParassign_values_to_leaves_edgeParassign_values_to_nodes_nodeParassign_values_to_branches_edgeParremove_branches_edgeParremove_nodes_nodePar

ラベルを変更することだけが必要な場合は、パッケージの次の機能が質問を解決します。

> labels(dend)
[1] "Arkansas"   "Arizona"    "California" "Alabama"    "Alaska"    
> labels(dend) <- 1:5
> labels(dend)
[1] 1 2 3 4 5

パッケージの詳細については、そのビネットをご覧ください。

于 2015-01-31T09:41:46.420 に答える