Я пытаюсь удалить дочерние элементы дерева в объекте 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.
Может кто-нибудь уточнить, что я делаю не так?
Заранее спасибо, ребята!