sapply

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

cindy poidevin
Messages : 4
Enregistré le : 12 Oct 2008, 11:34

sapply

Messagepar cindy poidevin » 13 Oct 2008, 10:30

bonjour,

Je n'arrive pas à comprendre comment le sapply fonctionne dans les programmes R, par exemple, dans le programme ci dessous :

ind = function(x,a)
{
if (x<=0|x>1) stop ("x n'est pas dans ]0,1]")
sum(x-a>0)+1
}
find = function(x,a)
{
sapply(x,ind,a)

j'ai essayé de lire plusieurs documentations sur internet mais je ne comprends toujours pas :cry: si quelqu'un pouvait m'aider...
merci d'avance

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 13 Oct 2008, 12:21

Code : Tout sélectionner

sapply(x,ind,a)


Ici la fonction sapply applique à chaque élément de x la fonction ind (définie plus haut) avec le paramètre a.
sapply permet d'appliquer à une liste une fonction quelle qu'elle soit et on obtient en sortie un vecteur (ou une matrice) contrairement à lapply qui génère une liste.
Dans l'exemple que tu a pris c'est déjà une utilisation plus complexe de sapply puisqu'il est imbriqué dans une fonction. IL y a plus simple pour comprendre le fonctionnement. Par exemple, crée toi une liste de vecteur et tu pourras tenter la commande :

Code : Tout sélectionner

sapply(TaListdeVecteur mean)


ou encore sur un tableau de donnée (un data.frame est une liste) si tu fais la même commande qu'au dessus tu auras la moyenne par colonne.

Code : Tout sélectionner

sapply(tontableau, mean)


Je ne vois pas quoi te dire de plus pour le moment. :)

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Messagepar jean lobry » 13 Oct 2008, 16:05

Bonjour,

la fonction sapply() fait en fait appel à la fonction lapply() et essaye de simplifier le résultat en, typiquement, un vecteur. Donc le plus simple pour comprendre sapply() c'est de commencer à jouer avec lapply() qui va appliquer une même fonction à une liste. Comme les objets de la classe data.frame sont aussi des listes, on peut faire par exemple :

Code : Tout sélectionner

data(rock)
lapply(rock, mean)
colMeans(rock)
sapply(rock, mean)


Amicalement,

Jean

cindy poidevin
Messages : 4
Enregistré le : 12 Oct 2008, 11:34

merci

Messagepar cindy poidevin » 16 Oct 2008, 11:10

merci bcp pour vos reponses!! ca m'a bcp aidé :)


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité