Lapply Sous R
Modérateur: Groupe des modérateurs matthieu faron Messages: 586 Enregistré le: 16 Fév 2011, 11:23 Titre d'un graphique appelé par fonction et lapply Bonjour, J'utilise R 2. 12. 1 sous Windows XP. J'ai crée une fonction qui effectue une analyse de survie. Celle-ci doit afficher les courbes de survie à l'aide de la fonction survplot (du package rms) si p est inférieur à 0. 05. Je souhaiterais afficher comme titre de la courbe le nom de cette variable. J'ai réussi à trouvé sur le forum et dans les aides sur internet: Code: Tout sélectionner titre <- paste("Overall Survival:", substitute(var)) print(titre) text(titre[3], xpd=T, x=12, y=1. 1, font=2) ou var est le nom de la variable testé et l'argument de la fonction. Quand j'appelle la fonction directement çà marche mais quand j'appelle la fonction par lapply (pour la faire sur toutes les variables que je veux du data-frame) impossible de réussir à afficher le nom de cette variable. J'ai essayé avec: Mais ceci superpose 1 ligne pour tous les éléments du vecteur var... Lapply sous réserve. et pas son nom.
Lapply Sous Réserve
936 ## iris$Species: virginica ## [1] 6. 588 On peut aussi employer cette syntaxe: with(iris, tapply(, Species, mean)) ## 5. 588 Et comme précédemment, si la fonction employée nécessite des arguments supplémentaires, on les ajoute après la virgule: res <- with(iris, tapply(, Species, quantile, probs=c(0. 75))) ## $setosa ## 4. 8 5. 2 ## $versicolor ## 5. R pour les nuls: La fonction apply(). 6 6. 3 ## $virginica ## 6. 225 6. 900 ## [1] "array" La fonction apply permet d'appliquer une fonction sur toutes les lignes ou toutes les colonnes d'un data frame (ou une matrice). Si on souhaite appliquer la fonction sur les lignes, on va spécifier l'argument MARGIN=1 (en pratique, on utilise que le 1 en second argument de la fonction). De la même manière, si on souhaite appliquer la fonction sur les colonnes, on va spécifier l'argument MARGIN=2 (là encore, en pratique, on utilise que le 2 en second argument de la fonction) Par exemple ici, si on souhaite faire la moyenne des 4 premières variables du jeu de données iris, sur les 10 premières lignes: res <- apply(iris[1:10, 1:4], 1, mean, ) ## 1 2 3 4 5 6 7 8 9 10 ## 2.
Peut-être que cela vous donnera des idées de résolutions... Sinon, s'il vous est possible de mettre un (court) extrait de votre jeu de données, cela rendrait les choses peut-être plus claires. Cela dit, peut-être que d'autres membres du forum connaissent mieux que moi les fonctions que vous utilisez et seront plus à même de vous apporter leur aide. Lapply sous r sistible ascension du. Bonne continuation:) Message par matthieu faron » 21 Fév 2011, 16:18 Merci à vous deux pour votre aide. à Maxime: malheureusement quand j'enlève substitute titre devient un vecteur et la fonction text imprime toutes les combinaisons possibles de la modalité de la variable les unes sur les autres. Par exemple Overall survival: colon et Overall survival: rectum imprimé l'un sur l'autre au lieu de "primsite". à Aline: J'ai bien essayé votre exemple, mais chez moi le titre s'affiche avec la valeur de la variable (généré par runif()) et non pas avec son nom "X1". Encore merci Message par matthieu faron » 21 Fév 2011, 16:35 Merci, C'est mieux car maintenant le titre est de la forme: [[X10L]] Avec je pense 10 qui représente la position de la variable en question dans la liste (ce qui permet de la repérer!