R data.tree перечисляет иерархию

Я новичок в data.tree и люблю перечислять огромную иерархию с парой измерений. На самом деле я борюсь и повторяюсь с вложенным циклом, и использование подъема очень ужасно.

library(data.tree)    
for(i2 in 1:2) {
  for(i3 in 1:2) {
  h2 <- acme$Climb(position = c(1,i2))$path
  h3 <- acme$Climb(position = c(1,i2,i3))$path
  print(sprintf("%d.%d.%d",1,i2, i3))
  print(sprintf("%d.%d",1,i2))
 }
 }

1 Acme Inc. 1
2 ¦--Бухгалтерский учет 1.1
3 ¦ ¦--Новое программное обеспечение 1.1.1
4 ¦ °--Новые стандарты бухгалтерского учета 1.1.2
5 ¦--Исследования 1.2
6 ¦ ¦--Новая линейка продуктов 1.2.1
7 ¦ °--New Labs 1.2.2
8 °--IT 1.3
9 ¦--Аутсорсинг 1.3.1
10 ¦--Двигайтесь 1.3.2
11 °--Переключитесь на R 1.3.3


person Christian    schedule 29.05.2017    source источник
comment
Что именно вы хотите сделать? Возможно, Get — это все, что вам нужно. Убедитесь, что вы прочитали виньетки.   -  person Christoph Glur    schedule 29.05.2017
comment
В исходном acme у меня нет перечисления, такого как 1 , 1.1, 1.1.1 и т. д., и я ищу более подходящий способ вместо этого с циклом, если это возможно.   -  person Christian    schedule 30.05.2017


Ответы (1)


Я все еще не уверен, чего ты хочешь. Давайте попробуем это:

library(data.tree)
data(acme)

NodeName <- function(node) {
  if (node$isRoot) "1"
  else paste(NodeName(node$parent), node$position, sep = ".")
}

print(acme, nme = NodeName)

Это дает:

                          levelName   nme
1  Acme Inc.                            1
2   ¦--Accounting                     1.1
3   ¦   ¦--New Software             1.1.1
4   ¦   °--New Accounting Standards 1.1.2
5   ¦--Research                       1.2
6   ¦   ¦--New Product Line         1.2.1
7   ¦   °--New Labs                 1.2.2
8   °--IT                             1.3
9       ¦--Outsource                1.3.1
10      ¦--Go agile                 1.3.2
11      °--Switch to R              1.3.3
person Christoph Glur    schedule 02.06.2017