Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

La funzione apply() è in assoluto una delle capacità più preziose. Per un certo periodo di tempo ne sono stato spaventato e non ho voluto utilizzarla. Tuttavia, rende il codice talmente veloce da poter essere composto così velocemente che non possiamo sopportare il costo di non utilizzarlo. Nella remota possibilità che mi assomigliate, che non lo utilizzerete, applicate la motivazione che è allarmante, esaminate le linee di accompagnamento, vi sosterrà. Avete bisogno di capire come utilizzare apply() quando tutto è fatto, con una capacità fatta in casa o con pochi parametri? A quel punto, andate a vedere i modelli di accompagnamento.

La funzione apply() è nota come incredibilmente preziosa per migliorare la velocità del nostro codice quando dobbiamo lavorare su una rete o su un vettore. Io la uso, ma in genere non ho la più pallida idea di come utilizzarla.

Cosa sta succedendo qui?

apply() è un’opera R che consente di svolgere compiti dinamici su reticolo, vettoriale o espositivo. I compiti dovrebbero essere possibili sulle linee, sui segmenti o anche sui due.

Come può funzionare?

L’esempio è estremamente semplice: applicare (variabile, bordo, lavoro).

– la variabile è la variabile a cui applicare la capacità.

– edge determina nella remota possibilità che si debba applicare per spinta (edge = 1), per segmento (edge = 2), o per ogni componente (edge = 1:2). Il bordo può essere molto più degno di nota di 2, nella remota possibilità che si lavori con fattori di misura più prominenti di due.

– Il lavoro è la capacità che dovete applicare ai componenti della vostra variabile.

Poiché penso che il modello sia più chiaro di tutti gli altri, ecco la guida più significativa per comprendere la capacità di applicazione()

Introduzione:

#la matrice su cui lavoreremo:

a = matrice(c(1:15), nrow = 5 , ncol = 3)


#applicherà la funzione media a tutti gli elementi di ogni rowapply
(a, 1, media)
# [1] 6 7 8 9 10

#applicherà la funzione media a tutti gli elementi di ogni colonna
applicare(a, 2, media)
# [1] 3 8 13

#applicherà la funzione media a tutti gli elementi di ogni colonna e di ogni riga, cioè ogni elementapply
(a, 1:2, media)# [,1]
 [,2] [,3]#
 [1,] 1 6 11# [2,]
 2 7 12# [
3,] 3 8 13# [
4,] 4 9 14# [
5,] 5 10 15

Di recente abbiamo fatto una prova ai vari margini per mostrare i fondamentali risultati immaginabili. Sia come sia, come ho detto, possiamo anche provare a prendere un colpo su diversi fattori, per esempio, una varietà di misure 3:

#applicare() per array di altre dimensioni :
a = array(1:8, dim = c(2,2,2))
applicare(a, 3, somma)

# , , 1##    
  [,1] [,2]#
 [1,]    1    3# [2,
]    2    4##
 , , 2##      
 [,1] [,2]#
 [1,]    5    7# [2,]
    6    8

Utilizzare una funzione fatta in casa:

Possiamo anche utilizzare la nostra funzione. Ad esempio, riproduciamo la somma delle funzioni (assolutamente inutile ma manteniamoci semplici!).

f1 = funzione(x){
 ritorno(somma(x))} applicazione
(a, 1, f1)

La funzione apply() è certamente una delle più utili. Mi ha spaventato per un po’ di tempo e mi sono rifiutato di usarla. Ma rende il codice così veloce da scrivere e così efficiente che non possiamo permetterci di non usarla. Se siete come me, che vi rifiutate di usare apply apply perché fa paura, leggete le righe seguenti, vi aiuterà. Volete sapere come usare apply() in generale, con una funzione fatta in casa o con diversi parametri ? Allora andate a vedere i seguenti esempi.



La funzione apply() è nota come estremamente utile per migliorare la velocità del nostro codice quando vogliamo far funzionare alcune funzioni su una matrice o un vettore. Io la uso, ma non so bene come usarla.

Che cos’è?

apply() è una funzione R che permette di effettuare operazioni rapide su matrice, vettore o array. Le operazioni possono essere effettuate sulle linee, sulle colonne o anche su entrambe.

Come funziona?

Il modello è molto semplice: applicare (variabile, margine, funzione).
-variabile è la variabile a cui si vuole applicare la funzione.
-margin specifica se si vuole applicare per riga (margine = 1), per colonna (margine = 2), o per ogni elemento (margine = 1:2). Il margine può essere anche maggiore di 2, se lavoriamo con variabili di dimensione maggiore di due.
-funzione è la funzione che volete applicare agli elementi della vostra variabile.

Poiché penso che l’esempio sia più chiaro di qualsiasi altra cosa, ecco l’esempio più importante per capire la funzione apply().

Introduzione:

#la matrice su cui lavoreremo:

a = matrice(c(1:15), nrow = 5 , ncol = 3)


#applicherà la funzione media a tutti gli elementi di ogni rowapply
(a, 1, media)
# [1] 6 7 8 9 10

#applicherà la funzione media a tutti gli elementi di ogni columnapplicazione
 (a, 2, media)
# [1] 3 8 13

#applicherà la funzione media a tutti gli elementi di ogni colonna e di ogni riga, cioè ogni elementapply
(a, 1:2, media)# [,1]
 [,2] [,3]#
 [1,] 1 6 11# [2,]
 2 7 12# [
3,] 3 8 13# [
4,] 4 9 14# [
5,] 5 10 15

Abbiamo appena lavorato sui diversi margini per mostrare le possibilità di base. Ma come ho detto possiamo lavorare anche su altre variabili, come ad esempio un array di dimensione 3:

#applicare() per array di altre dimensioni :
a = array(1:8, dim = c(2,2,2))
applicare(a, 3, somma)

# , , 1##    
  [,1] [,2]#
 [1,]    1    3# [2,
]    2    4##
 , , 2##      
 [,1] [,2]#
 [1,]    5    7# [2,]
    6    8

Alcuni parametri:

Capacità con pochi parametri. Ecco la motivazione principale dietro il motivo per cui non ho mai utilizzato apply(), non avevo la più pallida idea di come fare quando avevo pochi parametri in una capacità. Questo è molto semplice, dobbiamo semplicemente specificare nel parametro la variabile che è coerente.

Utilizzare una funzione fatta in casa:

Possiamo anche utilizzare la nostra funzione. Ad esempio, riproduciamo la somma delle funzioni (assolutamente inutile ma manteniamoci semplici!).

f1 = funzione(x){
 ritorno(somma(x))}

applicare(a, 1, f1)

Diversi parametri:
Una funzione con diversi parametri. Ecco il motivo principale per cui non ho mai usato apply(), non sapevo come fare quando avevo diversi parametri in una funzione. Questo è abbastanza semplice, dobbiamo solo specificare nel parametro la variabile che è costante.

f2 = funzione(x1,x2){
 x1-x2}b
 = 2

#con il secondo parametro come opzione si applica
 (a,1,f2,x2=b)

#       [,1] [,2] [,3] [,4] [,5]#
 [1,]   -1    0    1    2    3#
 [2,]    4    5    6    7    8# [3,]
    9   10   11   12   13# [3,]
   22   24   26   28   30

#con il primo parametro come opzione si applica
 (a,1,f2,x1=b)

# [,1] [,2] [,3] [,4] [,5]# [1,] 
  1    0   -1   -2   -3#
 [2,]   -4   -5   -6   -7   -8# [
3,]   -9  -10  -11  -12  -13

Confido che questi modelli vi sosterranno. Da e per me utilizzare la capacità di applicare() da quando ho sperimentato questi due modelli. Ovviamente ci sono numerose sottigliezze diverse che possono essere preziose, tuttavia, questi primi modelli gestiscono i principali risultati utili concepibili di apply().