Comprendre les fonctions apply(), lapply(), sapply(), tapply() dans R avec des exemples

30 octobre 2021

L'un des langages de programmation largement utilisés pour le calcul statistique et le développement de logiciels statistiques en R. Langage de programmation R est sous licence GNU General Public License. Il dispose de tous les programmes de gestion des interfaces, appelés interface de ligne de commande . De plus, le langage de programmation R est intégré à d'autres interfaces utilisateur graphiques, comme RStudio , JupyterName cahier. Vous apprendrez quelques fonctions importantes de R, comme apply(), tapply(), lapply() et sapply() dans cet article.

Table des matières

Qu'est-ce que le langage de programmation R ?

En 1993, le langage de programmation appelé R est né. Ross Ihaka et Robert Gentleman ont conçu le langage de programmation R. Le langage de programmation R est la version moderne du langage de programmation S. le Langage de programmation S a également été mis au point pour le calcul statistique. Le nom R est donné le langage de programmation basé sur Ross et les noms de Robert.



Comme le langage de programmation R est spécialement conçu pour les statistiques et les graphiques, il intègre diverses méthodes statistiques et graphiques. Ces méthodes comprennent la classification, le regroupement, la modélisation linéaire, la modélisation non linéaire et de nombreuses autres techniques. L'avantage significatif du langage de programmation R est qu'il a orienté objet facilités que les autres langages de programmation statistique.

Faites-nous savoir comment le programme est exécuté dans le langage de programmation R. Il a une invite de commande R qui exécute n'importe quel code ou une ligne de code. Supposons qu'un utilisateur ait besoin de calculer 2+2 sur l'invite de commande R. Il affichera le résultat 4, comme indiqué ci-dessous :

|__+_|

Ici, chaque élément est traité comme un vecteur unique. Par conséquent, 2 + 2 implique deux vecteurs différents, chacun ayant 2 comme valeur. En regardant la sortie, il affiche [1] avant la sortie réelle, 4. Le [1] représente le nombre d'éléments dans un vecteur.

Structures de données en R

Le langage de programmation R prend également en charge l'utilisation de matrices. Il prend en charge les structures de données, comme tableaux , matrices, vecteurs, listes , et trames de données.

sapply
    Déployer:

La structure de données de tableau dans le langage de programmation R contient des données de types similaires. Il stocke les données sous forme de plus de deux dimensions. Par exemple, si nous définissons un tableau (3,5,4), il crée 4 matrices, où chaque matrice aura 3 lignes et 5 colonnes. Vous pouvez créer un tableau en langage de programmation R en utilisant la méthode array().

La fonction array() produit un tableau, qui est considéré comme un vecteur. La syntaxe de la fonction array() dans R est donnée ci-dessous :

|__+_|

Ici, nrow signifie le nombre de lignes, ncol implique le nombre de colonnes et nmat signifie le nombre de matrices.

Regardons l'exemple de création d'un tableau dans R. Le code ci-dessous crée un tableau 3*3.

|__+_|

Sortir:

|__+_|
[ , un][ , deux][ , 3]
[ , un]3undeux
[ , deux]649
[ , 3]sept58
|__+_|
[ , un][ , deux][, 3]
[ , un]3undeux
[ , deux]649
[, 3]sept58
    Tableaux:

Dans le langage de programmation R, la structure de données matricielle représente les données sous la forme d'une forme rectangulaire à deux dimensions. Tous les éléments présents dans la matrice sont du même type de données. Comme la méthode array() est utilisée pour créer un tableau, la fonction matrix() est utilisée pour créer une matrice.

La matrice est couramment utilisée pour les calculs mathématiques. Cependant, il peut également prendre des valeurs de caractères ainsi que des valeurs logiques. Mais, ces valeurs ne sont généralement pas largement utilisées dans les matrices. La syntaxe de la fonction matrix() dans R est donnée comme suit :

|__+_|

Ici, les données sont traitées comme un vecteur composé d'éléments matriciels. L'autre argument, nrow, implique le nombre de lignes et ncol signifie le nombre de colonnes. Le dernier argument, dimnames, représente les noms des lignes et des colonnes. L'argument unique dans matrix() est byrow, qui est une valeur logique. Si byrow est VRAI, tous les éléments vectoriels sont représentés dans un format de ligne.

Vous trouverez ci-dessous l'exemple qui vous aidera à mettre en œuvre des matrices.

|__+_|

Sortir:

[ , un][ , deux][ , 3]
[ , un]456
[ , deux]sept89
[ , 3]dixOnze12
[ , un][ , deux][ , 3]
[ , un]4septdix
[ , deux]58Onze
[ , 3]6912
col1col2col3
Row1456
rangée2sept89
Rangée3dixOnze12
    Vecteurs :

Un vecteur est une structure de données très fondamentale dans le langage de programmation R. Il prend en charge six valeurs de type de données distinctes, telles que entier, double, complexe, caractère, brut et logique. Dans la structure de données vectorielles, vous pouvez inclure un seul élément parmi plusieurs éléments. Voyons des exemples d'éléments simples et multiples dans un vecteur.

Voir également 23 meilleurs sites Web de partage de fichiers gratuit

Élément unique :

|__+_|

Multi-éléments :

|__+_|
    Lister:

Une structure de données de liste peut contenir n'importe quel type de données ensemble, comme des entiers, des chaînes, des vecteurs, etc. Il est possible d'avoir une liste à l'intérieur d'une liste. Une caractéristique étonnante d'une structure de données de liste est qu'elle peut également avoir une matrice ou n'importe quelle fonction à l'intérieur. Nous créons une liste dans le langage de programmation R en utilisant la fonction list().

Voici la syntaxe de la liste dans R :

|__+_|

Ici, x est un objet de la liste, et la valeur représente des éléments de l'objet x dans la liste. Voyons un exemple de liste dans R.

|__+_|

Sortir:

|__+_|
    Trames de données :

Les trames de données sont une autre structure de données du langage de programmation R. Il est représenté sous forme de tableau. En d'autres termes, il peut être traité comme des matrices bidimensionnelles, où les valeurs de colonne peuvent être de n'importe quel type. La fonction appelée data.frame() est utilisée pour créer la structure du bloc de données.

Décrivons un exemple pour comprendre comment la trame de données est créée dans R.

|__+_|

Sortir:

|__+_|

Pourquoi utiliser la fonction familiale R apply () ?

Dans la programmation, nous utilisons un pour la boucle pour l'itération. Cependant, l'utilisation de boucles présente certains effets indésirables. Nous utilisons des objets dans la boucle for. Ces objets restent à l'intérieur de la boucle for dans l'espace de travail. Certaines personnes peuvent avoir besoin de ces objets, tandis que d'autres peuvent les considérer comme indésirables. Voyons comment la boucle for a des effets secondaires avec un exemple.

|__+_|

C'est le code. Quelle est l'attente de production? Vous pourriez vous attendre à ce que le résultat soit la chaîne 'Shining in the shade…'. Après avoir exécuté ce code, le résultat réel que vous obtenez est 5, car la boucle for s'exécute pendant 5 itérations.

Sortir:

|__+_|

Pour chaque itération, la variable 'chanson' prend la valeur de la 'chanson'.

Le langage de programmation R introduit un autre système en boucle robuste pour éviter les problèmes causés en raison de la boucle. Le nouveau système de mise en boucle est d'appliquer la famille. Une famille est appliquer l'ensemble des fonctions qui n'ont pas d'effets secondaires comme la boucle. Il y a sept fonctions incorporées dans une famille présentent une demande.

Fonctionnalités de la fonction de famille apply()

Voici quelques caractéristiques essentielles des fonctions de la famille apply(). Avant de plonger dans les détails de la fonction de famille apply(), nous allons examiner certaines fonctionnalités principales.

  1. Il y a deux arguments présents dans chaque fonction de la famille apply(). Le premier argument à passer à la fonction apply() est l'objet, et le second est la fonction. R permet de traiter une fonction comme un argument tout en la passant dans l'une des fonctions apply().
  2. L'une des caractéristiques importantes et principales de l'utilisation des fonctions de la famille apply() est qu'il n'y a aucun effet secondaire sur le code.
  3. Les fonctions apply() utilisent des arguments points pour passer des arguments à n'importe quelle fonction.
  4. Chaque fois que nous utilisons une fonction apply (), elle renvoie une sortie après l'exécution du code. N'utilisez les fonctions apply() que si elles sont nécessaires. Par exemple, si vous souhaitez uniquement des résultats sur l'invite de commande à l'aide de la fonction print(), n'utilisez pas les fonctions apply().

Avantages de la fonction apply () par rapport à la boucle traditionnelle

Tout code ou bloc de code est exécuté plus rapidement avec Apply () des fonctions que les boucles traditionnelles. Plusieurs packages intégrés sont disponibles dans le langage de programmation R. L'un des forfaits de R est Gamclass, qui comprend le jeu de données du système d'enregistrement de l'analyse de la fatalité (FARMES). The Fars DataSet a 17 caractéristiques différentes ayant 15118 observations.

Nous prendrons un exemple pour regarder le temps nécessaire à l'exécution du code à l'aide de la fonction apply() et de la méthode de boucle traditionnelle. Considérez que nous devons trouver la moyenne des poids donnés. Nous allons donc construire un code en utilisant la boucle for et la fonction apply().

|__+_|

Utilisation de la boucle for :

Utilisation de Apply () Fonction:

|__+_|

L'utilisation de la fonction apply() nécessite moins de lignes de code que la boucle for. Il faut voir le temps nécessaire pour calculer la moyenne des poids donnés. Par conséquent, nous utiliserons un package R unique, appelé Profvis.

L'objectif principal du package Provifs est d'offrir une représentation graphique du temps et de la mémoire consommés par chaque instruction du code. Ainsi, l'utilisation du package Provifs nous permettra de connaître le temps nécessaire pour calculer la moyenne des poids à l'aide de la boucle for et de la fonction apply().

|__+_|

En utilisant la boucle pour la boucle:

Dans la sortie du code ci-dessus, vous remarquerez que le temps requis pour la boucle for sera affiché.

|__+_|

La ligne de code prend 30 ms pour exécuter.

|__+_|

Cette ligne de code prend 1600 ms pour s'exécuter. Par conséquent, deux lignes prennent 1900 ms pour s'exécuter.

|__+_|

En utilisant la fonction apply ():

Dans le code ci-dessus, la ligne

|__+_|

ne prend que 20 ms pour l'exécution.

Voir également 4 correctifs pour nous n'avons pas pu créer le fichier de données Outlook

À partir des deux exécutions de code ci-dessus, nous concluons que la fonction apply () est bénéfique et permet de gagner du temps par rapport à la boucle for traditionnelle. Il est également simple d'utiliser la fonction apply(), car elle nécessite moins de lignes de code. Faisons maintenant connaissance avec les différentes fonctions apply() et leurs implémentations.

fonction appliquer ()

Nous avons étudié cinq structures de données différentes du langage de programmation R. La fonction apply() utilise deux structures de données sur cinq, le bloc de données et la matrice. En d'autres termes, le bloc de données et la matrice sont utilisés comme entrée de la fonction apply(). La sortie de la fonction apply() est exprimée dans un vecteur.

La fonction Apply () est la fonction fondamentale de toutes les autres fonctions. Cela évite le problème des constructions de boucle explicites. Voyons quels arguments sont utilisés dans la fonction Apply (). Ci-dessous la syntaxe:

|__+_|

Discutons de chaque application Apply () de la fonction applicable en détail. Le premier paramètre, X, implique une matrice ou un tableau. Ensuite, la marge représente deux valeurs 1 et 2, indiquant sur lesquelles les données s'appliquent () doivent être utilisées.

Pour MARGIN=1, la fonction apply() doit être utilisée sur les lignes, tandis que pour MARGIN=2, la fonction apply() doit être appliquée sur les colonnes. Le dernier paramètre, FUN, représente la fonction à appliquer. Si vous souhaitez utiliser la fonction apply() sur les lignes et les colonnes, vous devez définir MARGIN = c(1,2).

Il existe plusieurs fonctions intégrées dans le langage de programmation R, comme la somme, la moyenne, la médiane, le max et le min. Vous pouvez également utiliser des fonctions définies par l'utilisateur. Nous allons maintenant voir l'exemple où la fonction apply() peut être utilisée. Prenons un exemple d'ajout de deux matrices sur toutes les colonnes.

|__+_|

Dans les lignes de code supérieures, nous avons affiché la matrice p. Par conséquent, la sortie sera :

[ ,un][ , deux][ , 3][ , 4][, 5][ .6]
[un, ]un6un6un6
[deux, ]deuxseptdeuxseptdeuxsept
[3, ]383838
[4, ]494949
[5, ]5dix5dix5dix

Nous avons effectué la somme des colonnes et le résultat sera le suivant :

Sortir:

|__+_|

lappaly () Fonction

Une autre fonction de la famille de fonctions apply() est la fonction lapply(). Dans la fonction lapply(), nous utilisons la liste comme entrée et elle produit une liste comme sortie. La longueur de la liste de sortie est la même que celle de la liste d'entrée. Dans le contexte de la fonction lapply(), l implique une liste. De plus, la fonction lapply() prend également une trame de données et un vecteur en entrée et produit la liste en sortie. Ci-dessous la syntaxe de la fonction lapply() :

|__+_|

La fonction lapply() prend deux arguments. Ici, X implique un objet ou un vecteur, et FUN représente toute fonction à appliquer à l'objet.

Différence entre les fonctions apply() et lapply() :

  1. Dans la fonction apply(), l'entrée donnée est la trame de données et la matrice. D'autre part, la fonction lapply() prend le bloc de données, la liste et le vecteur comme entrée.
  2. La sortie de la fonction apply() est représentée sous forme de vecteur, tandis que la sortie de la fonction lapply() est sous forme de liste.
  3. La fonction lapply() n'inclut pas l'argument MARGIN.

Nous prenons un exemple pour comprendre le fonctionnement de la fonction lapply(). Dans cet exemple, nous allons convertir la chaîne de la matrice majuscule en minuscule.

|__+_|

Résultat:

|__+_|

Vous pouvez convertir votre liste en vecteur en utilisant la fonction unlist(). Faites-nous savoir comment fonctionne la fonction unlist().

|__+_|

Sortir:

|__+_|

fonction sapply ()

Une autre fonction de la famille apply() est la fonction sapply(). La fonction sapply() prend en entrée des structures de données vectorielles ou de trame de données et produit la sortie sous forme vectorielle ou matricielle. De plus, la fonction sapply() prend la liste en entrée et génère la même longueur de liste en sortie. Les fonctions lapply() et apply() sont similaires, mais la seule différence est que apply() produit un vecteur.

Ci-dessous la syntaxe de la fonction sapply() :

|__+_|

La fonction sapply() prend deux paramètres d'entrée, X et FUN. Le paramètre, X, implique un vecteur ou un objet, et le FUN signifie la fonction à utiliser avec X.

Voir également Comment couper le son du zoom sur un PC ou un appareil mobile

Différence entre les fonctions apply() et sapply() :

  1. La fonction apply() prend le bloc de données et une matrice comme entrée, tandis que la fonction sapply() prend le bloc de données, le vecteur et la liste comme entrée. La fonction lapply() prend également la même entrée que la fonction sapply().
  2. Ensuite, la fonction apply() présente son résultat sous forme de vecteur. D'autre part, la fonction sapply() produit un vecteur et une liste en sortie. La fonction lapply() n'a de sortie que sous forme de liste.
  3. Comme la fonction lapply(), la fonction sapply() n'a pas non plus MARGIN dans ses arguments.

Le code suivant illustre un exemple de la fonction sapply(). Le code ci-dessous utilise l'ensemble de données de la voiture et calcule la vitesse minimale et les distances d'arrêt des voitures.

|__+_|

Sortie : la sortie ci-dessous est générée à partir de la fonction lapply() et affiche la vitesse minimale et la distance d'arrêt.

|__+_|

Sortie : Le résultat ci-dessous est produit à partir de la fonction sapply(), représentant la vitesse minimale et les distances d'arrêt.

|__+_|

Voyons un exemple différent, qui affiche la distance d'arrêt maximale et la vitesse des voitures.

|__+_|

Sortie : Ici, le résultat est obtenu à partir de la fonction lapply(), indiquant la vitesse et la distance maximales.

|__+_|

La sortie de la ligne ci-dessus est obtenue à l'aide de la fonction sapply().

Sortir:

|__+_|

L'un des avantages significatifs de l'utilisation des fonctions lapply() et sapply() est que les utilisateurs peuvent utiliser des fonctions définies par l'utilisateur. Nous allons maintenant savoir comment la fonction définie par l'utilisateur peut être utilisée dans les fonctions lapply() et sapply().

Dans l'exemple actuel, nous définirons une fonction avgr, qui trouvera la moyenne minimale et maximale d'un vecteur.

|__+_|

Sortir:

|__+_|

Différence entre les fonctions apply(), sapply() et lapply()

Le tableau suivant décrit les différences globales entre les trois fonctions ci-dessus, apply(), lapply() et sapply().

Une fonctionArgumentsObjectifSaisirSortir
appliquer()Il prend trois arguments, à savoir X, MARGIN et FUN.Nous utilisons la fonction apply () sur les lignes et les colonnes d'une matrice.La fonction apply() prend une trame de données ou un vecteur en entrée.Il produit une sortie sous la forme d'une liste, d'un tableau ou d'un vecteur.
lapply()La fonction lapply() inclut deux arguments, X et FUN. Il n'a pas la MARGE.Il est utilisé pour s'appliquer à tous les éléments d'une liste, d'un vecteur ou d'un bloc de données.Cette fonction implique des structures de données d'entrée, comme une liste, un vecteur ou une trame de données.La fonction lapply() ne génère qu'une liste en sortie.
SOPPLY ()Cette fonction a également deux arguments, X et FUN. L'argument ARGIN n'est pas inclus.Vous pouvez utiliser la fonction sapply() à utiliser sur tous les éléments de l'entrée.La fonction sapply() prend également une liste, un vecteur ou un bloc de données en entrée.Il représente la sortie sous forme vectorielle ou matricielle.

Fonction tapply()

La fonction tapply() est utilisée pour calculer la moyenne, la médiane, la moyenne, le max, le min, la somme, etc. Vous pouvez calculer ces mesures pour chaque variable factorielle d'un vecteur. L'une des parties intéressantes de la fonction tapply() consiste à prendre n'importe quelle partie du sous-ensemble d'un vecteur et à y effectuer des mesures. Ci-dessous la syntaxe de la fonction tapply() :

|__+_|

Ici, X est un objet ou un vecteur, INDEX est une liste contenant un facteur et FUN est une fonction appliquée à X.

Nous comprendrons la fonction tapply() en prenant un exemple du jeu de données iris. Les data scientists ou les chercheurs effectuent des regroupements de données en fonction de caractéristiques spécifiques, telles que l'ID, le pays ou la ville. Le domaine de l'apprentissage automatique utilise largement l'ensemble de données iris.

Supposons qu'il existe trois types de fleurs différents, Sepal, Versicolor et Virginica. L'ensemble de données sur l'iris prédit les espèces de fleurs en collectant des informations, telles que la longueur et la largeur des fleurs. Considérez que nous devons calculer la longueur médiane de chaque espèce. Vous pouvez utiliser la fonction tapply() pour calculer la médiane de la longueur.

|__+_|

Sortir:

|__+_|

Fonction mapply()

La fonction mapply() de la famille apply() est similaire à la fonction sapply(). Il génère également un vecteur en sortie. La fonction mapply() est également appelée fonction multivariée. Le nom est la fonction multivariée, car elle peut être utilisée avec plusieurs arguments de vecteur et de liste. En d'autres termes, la fonction mapply() permet d'effectuer des itérations sur plusieurs objets en parallèle. Le FUN dans la fonction mapply() est utilisé avec chaque élément de chaque argument.

L'exemple suivant vous permettra de mieux comprendre la fonction mapply().

|__+_|

Sortir:

|__+_|

Ici, la fonction est l'argument passé à la fonction mapply(). La fonction implique deux paramètres, a et b. Le deuxième argument donné est a=c(3,4) et le troisième argument est b=c(2,3). Ainsi, a et b ont deux valeurs différentes. Ainsi, la fonction dans mapply() est appelée deux fois. Le premier appel de la fonction mapply() est pour a=3 et y=2. Pour x=4 et y=3, le deuxième appel est donné à la fonction mapply().

Conclusion

Le langage de programmation R est spécialement développé pour représenter des données statistiques et graphiques. Le RStudio est une interface particulière conçue pour le langage R. Il existe cinq structures de données primaires dans les langages R. Ce sont Vector, List, Matrices, Data Frame et Array. Nous avons vu chacune de ces structures de données R en détail avec leurs syntaxes.

Plusieurs fonctions sont incorporées dans la fonction de la famille apply(). Cet article inclut les fonctions apply(), lapply(), sapply(), tapply() et mapply(). Chaque fonction appartient à la famille apply() et est expliquée clairement avec un exemple.

Plus tard, nous avons expliqué la différence entre les fonctions apply() et lapply(), les fonctions ad apply() et sapply(). Une comparaison détaillée des fonctions apply(), lapply() et sapply() est présentée dans un tableau, ce qui facilite la compréhension de tout lecteur.