如何访问R中树状图的属性



来自我用创建的树状图

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

例如,我如何访问"中点"属性或"标签"属性中的第二个?

(我希望我在这里使用正确的术语)

我试过之类的东西

k$midpoint
attr(k,"midpoint")

但两者都返回了"NULL"。

很抱歉出现第2个问题:如何在属性"中点"之后添加"标签"属性?

您的k仍然埋得太深了一层。已经在列表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

您可以像前面的回答一样手动更改参数。这样做的问题是,当你想多次手动操作时,手动操作效率很低。此外,虽然更改参数很容易,但这种更改可能不会反映在任何其他功能中,因为它们不会基于这种更改执行任何操作(必须对其进行编程)。

对于您的特定问题,通常取决于我们要查看的属性。对于"中点",请使用get_nodes_attr函数,并带有dendrend包中的"中点"参数。

# 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

有关包装的更多详细信息,您可以查看其小插曲。

相关内容

  • 没有找到相关文章

最新更新