Сокращение дерева на основе частичного совпадения атрибута с использованием data.tree в R - PullRequest
1 голос
/ 29 апреля 2019

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

Я пробовал это, следуя шаблону на странице учебника

> data(acme)
> acme$Do(function(node) node$trim <- grep('New', node$name))
> Prune(acme, function(node) node$trim == 1)

который дал это

> print(acme, 'trim')
                          levelName trim
1  Acme Inc.                          NA
2   ¦--Accounting                     NA
3   ¦   ¦--New Software                1
4   ¦   °--New Accounting Standards    1
5   ¦--Research                       NA
6   ¦   ¦--New Product Line            1
7   ¦   °--New Labs                    1
8   °--IT                             NA
9       ¦--Outsource                  NA
10      ¦--Go agile                   NA
11      °--Switch to R                NA

> Prune(acme, function(node) node$trim == 1)
Error in if (!pruneFun(node$children[[i]])) { : 
  argument is of length zero

Затем я попробовал что-то похожее на то, что видел в похожем вопросе , но все равно не сработало.

Pruner <- function(node) {
  a <- node$name
  b <- node$isLeaf
  if(b == T && grepl('New', a) == T) {
    return(TRUE)
  } else {
    return(FALSE)
  }
}
Prune(acme, function(node) Pruner(node))

что дает мне это

print(acme)
levelName
1 Acme Inc. 

Может кто-нибудь уточнить, что я делаю не так?

Заранее спасибо, ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...