首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使R data.tree打印显示每个级别的值?

如何使R data.tree打印显示每个级别的值?
EN

Stack Overflow用户
提问于 2017-03-30 17:18:45
回答 1查看 355关注 0票数 1

我有一个数据框架,struct,显示了事物的层次结构:

代码语言:javascript
运行
复制
# A tibble: 4 × 3
   lev1  lev2  lev3
  <chr> <chr> <chr>
1     A    AA   AAA
2     B    AA   AAA
3     C    BB   BBB
4     D    BB   BBB

在另一个数据框架中,things是一个描述符,$Code,用于每一件事情:

代码语言:javascript
运行
复制
# A tibble: 8 × 2
  Thing    Code
  <chr>   <chr>
1     A   11-11
2     B   22-22
3     C   33-33
4     D   44-44
5    AA 111-111
6    BB 222-222
7   AAA    <NA>
8   BBB    <NA>

我将struct转换为data.tree节点:

代码语言:javascript
运行
复制
struct$pathString <- paste("things",
                       struct$lev3,
                       struct$lev2,
                       struct$lev1,
                       sep = "/")

pfo <- as.Node(struct)

print(pfo)命令提供输出:

代码语言:javascript
运行
复制
1 things       
2  ¦--AAA      
3  ¦   °--AA   
4  ¦       ¦--A
5  ¦       °--B
6  °--BBB      
7      °--BB   
8          ¦--C
9          °--D

对于每个级别,我想看到的是在打印树中的每个things$Code之后来自Thing的适当值,如下所示:

代码语言:javascript
运行
复制
1 things             Code
2  ¦--AAA         
3  ¦   °--AA      111-111
4  ¦       ¦--A     11-11
5  ¦       °--B     22-22
6  °--BBB      
7      °--BB      222-222
8          ¦--C     33-33
9          °--D     44-44

如何分配这些值并打印它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 12:00:43

下面是一个按字母顺序对树上的Things和遍历进行排序的解决方案,以匹配代码:

代码语言:javascript
运行
复制
#get the nodes corresponding to the struct elements as a traversal
trav <- Traverse(pfo, filterFun = isNotRoot)
#order alphabetically
trav <- trav[order(Get(trav, "name"))]

#also order things alphabetically
codes <- things[order(things$Thing), 2]

#assign codes to nodes
Set(trav, Code = codes$Code)

#print codes
print(pfo, "Code")

然后按需要打印:

代码语言:javascript
运行
复制
      levelName    Code
1 things               
2  ¦--AAA              
3  ¦   °--AA    111-111
4  ¦       ¦--A   11-11
5  ¦       °--B   22-22
6  °--BBB              
7      °--BB    222-222
8          ¦--C   33-33
9          °--D   44-44
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43124438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档