• analyse-de-donnes-cestad
  • analytics_tools_original
  • data-minig1
  • data-minig2
  • Data-Mining-1030
  • Big-data-azzurro
  • marketing-statistics
Enquêtes
Collete des données
Traitement des données
Analyse des données
 
Programmation
Programmation statistique
Developpement des macros
Modélisation et plus encore
 
Data Mining
Exploration des données
Modélisation prédictive
Big Data
 
Formations certifiantes
Formations à la carte
Semilaires et conférences

 

 

Comme indiqué à plusieurs reprises dans ce cours, le but de la fonction R () est de créer des fonctions. Par exemple, considérez ce code:

  1. inc <- function(x) return(x+1)
Source code
Il demande à R de créer une fonction qui ajoute 1 à son argument, puis assigne cette fonction à inc. Cependant, cette dernière étape - la mission - n'est pas toujours prise. Nous pouvons simplement utiliser l'objet de fonction créé par notre appel à function () sans nommer cet objet. Les fonctions dans ce contexte sont appelées anonymes, puisqu'elles n'ont pas de nom. (C'est un peu trompeur, car même les fonctions non anonymes n'ont qu'un nom dans le sens où une variable les pointe vers eux.)
Les fonctions anonymes peuvent être pratiques si elles sont courtes et sont appelées par une autre fonction. Revenons à notre exemple d'utilisation à la section 3.3:

  1. >z
  2. [,1] [,2]
  3. [1,] 1 4
  4. [2,] 2 5
  5. [3,] 3 6
  6. > f <- function(x) x/c(2,8)
  7. > y <- apply(z,1,f)
  8. >y
  9. [,1] [,2] [,3]
  10. [1,] 0.5 1.000 1.50
  11. [2,] 0.5 0.625 0.75
Source code
Nous allons contourner l'intermédiaire, c'est-à-dire ignorer l'affectation à f en utilisant une fonction anonyme dans notre appel à apply (), comme suit:

  1. > y <- apply(z,1,function(x) x/c(2,8))
  2. >y
  3. [,1] [,2] [,3]
  4. [1,] 0.5 1.000 1.50
  5. [2,] 0.5 0.625 0.75
Source code
Qu'est-ce qui s'est vraiment passé ici? Le troisième argument formel à apply () doit être une fonction, ce qui est exactement ce que nous avons fourni ici, puisque la valeur de retour de function () est une fonction!
Faire les choses de cette façon est souvent plus clair que de définir la fonction de manière externe. Bien sûr, si la fonction est plus compliquée, cette clarté n'est pas atteinte.