2017-06-12 3 views
0

J'essaie d'extraire des informations provenant de la fonction nodeapply (info_node).Utilisez (partykit- Nodeapply- Info_node) pour extrac informations dans la fonction

Je veux automatiser le processus de sorte que je puisse extraire les informations d'une liste d'identifiants de noeud et y opérer plus tard.

L'exemple comme suit:

data("cars", package = "datasets") 
ct <- ctree(dist ~ speed, data = cars) 

node5 <-nodeapply(as.simpleparty(ct), ids = 5, info_node) 
node5$`5`$n 

J'utilise le code ci-dessus pour extraire le nombre d'enregistrements sur le noeud 5.

Je veux créer une fonction pour extraire les informations d'une série de noeud :

infonode <- function(x,y){ 
    for (j in x){ 
    info = nodeapply(y, j, info_node) 
    print(info$`j`$n) 
    } 
} 

Mais le résultat revient toujours en tant que null.

Je me demande si le type de "J" est faux dans la fonction qui conduit à une lecture nulle dans l'impression.

Si quelqu'un pouvait m'aider, ce serait grandement apprécié!

Merci

Répondre

0

Vous pouvez donner nodeapply() une liste de ids et non seulement la liste avec un seul élément sera extrait, mais une liste de tous les noeuds sélectionnés. C'est la seule partie de votre question qui porte sur partykit. À partir de là, il fonctionne simplement sur des listes nommées standard dans R, sans rien de particulier à ce sujet. Pour répondre à votre problème, vous pouvez facilement utiliser l'indexation [[ plutôt que $ indexation, soit avec un entier ou un index de caractère:

node5[[1]]$n 
## n 
## 19 
node5[["5"]]$n 
## n 
## 19 

Ainsi, dans votre fonction infonode() vous pouvez remplacer info$ j $n soit par info[[1]]$n ou info[[as.character(j)]]$n.

Cependant, je voudrais simplement faire cela avec un sapply():

ni <- nodeapply(as.simpleparty(ct), ids = 3:5, info_node) 
sapply(ni, "[[", "n") 
## 3.n 4.n 5.n 
## 15 16 19 

ou une variante de cette ...

+0

Merci! Cela fonctionne si bien que je ne peux pas vous remercier assez pour l'aide! J'apprécie beaucoup! –