Comment appliquer des fonctions sur des rangées et des colonnes dans r

Dans R, vous pouvez utiliser la apply ()

Sommaire

fonction d'appliquer une fonction sur chaque ligne ou colonne d'un cadre de la matrice ou de données. Ceci présente des opportunités très pratiques.

Comptez en utilisant le R appliquer fonction

Imaginez que vous avez compté les oiseaux dans votre jardin sur trois jours différents et stocké les chiffres dans une matrice comme ceci:

> Chiffres lt; - matrice (c (3,2,4,6,5,1,8,6,1), ncol = 3)> colnames (chiffres) lt; - c ('moineau »,« colombe »,« corbeau »)> countssparrow colombe corbeau [1], 368 [2], 256 [3], 411

Chaque colonne représente une espèce différente, et chaque ligne représente un autre jour. Maintenant, vous voulez savoir le nombre maximum par espèce sur un jour donné. Vous pourriez construire un pour boucle de le faire, mais en utilisant apply (), vous faites cela en une seule ligne de code:

> Appliquer (chiffres, 2, max) sparrowdovecrow4 6 8



La apply () fonction retourne un vecteur avec le maximum pour chaque colonne et utilise les noms de colonnes comme noms pour ce vecteur ainsi commodément. Si R ne trouve pas de noms pour la dimension sur laquelle apply () exécute, il retourne un objet non identifié à la place.

Jetons un regard sur la façon dont cette apply () fonction fonctionne. Dans les lignes de code précédentes, vous avez utilisé trois arguments:

  • L'objet sur lequel la fonction doit être appliquée: Dans ce cas, il est la matrice Chiffres.

  • La dimension ou de l'indice sur lequel la fonction doit être appliquée: Le numéro 1 signifie rangée par rangée, et le nombre 2 signifie en colonne. Ici, nous appliquons la fonction sur les colonnes. Dans le cas de réseaux plus dimensions, cet indice peut être plus grand que 2.

  • Le nom de la fonction qui doit être appliqué: Vous pouvez utiliser des guillemets autour du nom de la fonction, mais vous ne devez pas. Ici, nous appliquons la fonction max. Notez qu'il n'y a pas de parenthèses nécessaires après le nom de la fonction.

La apply () fonction divise la matrice en rangées. Rappelez-vous que si vous sélectionnez une seule ligne ou colonne, R sera, par défaut, simplifier ce à un vecteur. La apply () fonction utilise alors ces vecteurs un par un comme un argument à la fonction que vous avez spécifié. Ainsi, la fonction appliquée doit être en mesure de traiter avec des vecteurs.

Ajouter des arguments supplémentaires à la appliquer fonction

Revenons à notre exemple de la section précédente: Imaginez que vous ne cherchez pas de colombes de la deuxième journée. Cela signifie que, pour ce jour-là, vous ne disposez pas de données, de sorte que vous devez définir cette valeur à N / A comme ça:

> Chiffres [2, 2] lt; - NA

Si vous appliquez le max fonction sur les colonnes de cette matrice, vous obtenez le résultat suivant:

> Appliquer (chiffres, 2, max) sparrowdovecrow4 NA 8

Cela ne veut pas ce que vous voulez. Afin de traiter les valeurs manquantes, vous devez passer l'argument na.rm au max en fonction de la apply () appeler (voir chapitre 4). Heureusement, cela se fait facilement dans R. Vous avez juste à ajouter tous les arguments supplémentaires à la fonction comme arguments supplémentaires de la apply () appeler, comme ceci:

> Appliquer (chefs d'accusation, 2, max, na.rm = TRUE) sparrowdovecrow4 6 8

Vous pouvez passer des arguments que vous voulez à la fonction dans le apply () appeler simplement en les ajoutant entre parenthèses après les trois premiers arguments.


» » » » Comment appliquer des fonctions sur des rangées et des colonnes dans r