我有一个数据框架,struct
,显示了事物的层次结构:
# 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
,用于每一件事情:
# 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
节点:
struct$pathString <- paste("things",
struct$lev3,
struct$lev2,
struct$lev1,
sep = "/")
pfo <- as.Node(struct)
print(pfo)
命令提供输出:
1 things
2 ¦--AAA
3 ¦ °--AA
4 ¦ ¦--A
5 ¦ °--B
6 °--BBB
7 °--BB
8 ¦--C
9 °--D
对于每个级别,我想看到的是在打印树中的每个things$Code
之后来自Thing
的适当值,如下所示:
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
如何分配这些值并打印它们?
发布于 2017-03-31 12:00:43
下面是一个按字母顺序对树上的Things
和遍历进行排序的解决方案,以匹配代码:
#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")
然后按需要打印:
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
https://stackoverflow.com/questions/43124438
复制相似问题