La fonction apply() est principalement utilisée pour éviter les utilisations explicites des constructions de boucle. Elle est la plus basique de toutes les collections peut être utilisée sur une matrice. Lapply sous r llye scientifique des. Cette fonction prend 3 arguments:
apply(X, MARGIN, FUN)Here:-x: an array or matrix-MARGIN: take a value or range between 1 and 2 to define where to apply the function:-MARGIN=1`: the manipulation is performed on rows-MARGIN=2`: the manipulation is performed on columns-MARGIN=c(1, 2)` the manipulation is performed on rows and columns-FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>
L'exemple le plus simple est de sommer une matrice sur toutes les colonnes. Le code apply(m1, 2, sum) va appliquer la fonction sum à la matrice 5×6 et retourner la somme de chaque colonne accessible dans le jeu de données. m1 <- matrix(C<-(1:10), nrow=5, ncol=6)m1a_m1 <- apply(m1, 2, sum)a_m1
Sortie:
Best practice: Stockez les valeurs avant de l'imprimer sur la console.
- Lapply sous réserve
Lapply Sous Réserve
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. 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". Lapply sous réserve. 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!
Nous créons une fonction nommée avg pour calculer la moyenne du minimum et du maximum du vecteur. avg <- function(x) { ( min(x) + max(x)) / 2}fcars <- sapply(dt, avg)fcars
Sortie
## speed dist## 14. 5 61. 0
La fonction sapply() est plus efficace que lapply() dans la sortie retournée parce que sapply() stocke les valeurs directement dans un vecteur. Comment appliquer une fonction à une liste ? : lapply ; sapply ? - Astuces et scripts R. Dans l'exemple suivant, nous verrons que ce n'est pas toujours le cas. Nous pouvons résumer la différence entre apply(), sapply() et `lapply() dans le tableau suivant:
lapply
Fonction
Arguments
Objectif. Entrée
apply
apply(x, MARGIN, FUN)
Appliquer une fonction aux lignes ou aux colonnes ou aux deux
Cadre de données ou matrice
vecteur, liste, tableau
lapply(X, FUN)
Appliquer une fonction à tous les éléments de l'entrée
Liste, vecteur ou cadre de données
liste
sappy
sappy(X FUN)
vecteur ou matrice
Trancher un vecteur
Nous pouvons utiliser lapply() ou sapply() de manière interchangeable pour trancher un cadre de données. Nous créons une fonction, below_average(), qui prend un vecteur de valeurs numériques et renvoie un vecteur qui ne contient que les valeurs strictement supérieures à la moyenne.