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

De functie apply() is absoluut een van de meest waardevolle capaciteiten. Ik was er een tijdje bang voor en wilde er geen gebruik van maken. Echter, het maakt de code zo’n grote hoeveelheid sneller samen te stellen dus bekwaam dat we de kosten van het niet gebruiken ervan niet kunnen dragen. Op de uit kans dat je lijkt op mij, dat je niet zal gebruiken van toepassing zijn op grond van het feit dat het alarmerend is, doordrongen van de begeleidende regels, zal het je ondersteunen. U moet zich realiseren hoe u apply() kunt gebruiken als het klaar is, met een zelfgemaakte capaciteit of met een paar parameters? Ga dan naar de bijbehorende modellen.

De functie apply() staat bekend als ongelooflijk waardevol om de snelheid van onze code te verbeteren wanneer we een paar capaciteiten op een netwerk of een vector moeten werken. Ik gebruik het, maar ik heb over het algemeen geen flauw idee hoe ik het moet gebruiken.

Wat is hier aan de hand?

apply() is een R-werk dat het mogelijk maakt om stevige taken te maken op traliewerk, vectorwerk of expositiewerk. De taken moeten mogelijk zijn op de lijnen, de segmenten of zelfs de twee.

Hoe kan het werken?

Het voorbeeld is uiterst basaal: toepassen (variabele, rand, werk).

– de variabele is de variabele waarop u de capaciteit moet toepassen.

– rand bepaalt de uitkans dat je moet toepassen door te duwen (rand = 1), per segment (rand = 2), of voor elk onderdeel (rand = 1:2). Edge kan veel opmerkelijker zijn dan 2, op de uitkans dat we werken met meetfactoren die meer prominent aanwezig zijn dan twee.

– werk is de capaciteit die u moet toepassen op de componenten van uw variabele.

Aangezien ik denk dat het model duidelijker is dan al het andere, is dit de belangrijkste leidraad om de capaciteit te begrijpen die van toepassing isn()

Inleiding:

# de matrix waar we aan gaan werken:

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


# zal de functie gemiddelde toepassen op alle elementen van elke rowapply
(a, 1, gemiddelde)
# [1] 6 7 8 9 10

# zal de functie gemiddelde toepassen op alle elementen van elke kolom
 (a, 2, gemiddelde)
# [1] 3 8 13

# zal de functiegemiddelde toepassen op alle elementen van elke kolom en van elke rij, d.w.z. elk elementair
(a, 1:2, gemiddelde)
# [,1] [,2] [,3]
# [1,] 1 6 11#
 [2,] 2 7 12#
 [3,] 3 8 13#
 [4,] 4 9 14#
 [5,] 5 10 15

We hebben vrij recentelijk een schot in de roos geschoten om de fundamentele denkbare uitkomsten te laten zien. Hoe het ook zij, zoals ik al zei, we kunnen ook een schot nemen in verschillende factoren, bijvoorbeeld een verscheidenheid aan metingen:

#apply() voor array van andere dimensie:
 a = array(1:8, dim = c(2,2,2))
van toepassing (a, 3, som)

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

Gebruik een zelfgemaakte functie:

We kunnen ook onze eigen functie gebruiken. We reproduceren bijvoorbeeld de functie-som (absoluut nutteloos, maar laten we het simpel houden!).

f1 = functie(x){
 return(sum(x))}apply
(a, 1, f1)

WELKOM!

 Hier vindt u dagelijks nieuws en tutorials over R, bijgedragen door honderden bloggers.
Er zijn vele manieren om ons te volgen –
Per e-mail:

Op Facebook:
Als u zelf een R-blogger bent, wordt u uitgenodigd om uw eigen R-inhoudsfeed aan deze site toe te voegen (Niet-Engelse R-bloggers moeten zichzelf hier toevoegen).

SS BANEN VOOR R-GEBRUIKERS

RECENTENPOSTEN

OVERIGE SITES

Functie van toepassing() – Tip 1

19 november 2012

Door Edwin Grappin

Deel

Dit artikel is voor het eerst gepubliceerd op ProbaPerception, en heeft vriendelijk bijgedragen aan R-bloggers. (U kunt hier verslag uitbrengen over de inhoud op deze pagina)


Wil je je inhoud delen op R-bloggers? Klik hier als je een blog hebt, of hier als je dat niet hebt.

DeelTweet

De functie apply() is zeker een van de meest nuttige functies. Ik was er een tijdje bang voor en weigerde het te gebruiken. Maar het maakt de code zo veel sneller om te schrijven en zo efficiënt dat we het ons niet kunnen veroorloven om hem niet te gebruiken. Als je net als ik weigert om het te gebruiken omdat het eng is, lees dan de volgende regels, het zal je helpen. U wilt weten hoe u apply() in het algemeen kunt gebruiken, met een zelfgemaakte functie of met verschillende parameters ? Ga dan naar de volgende voorbeelden.



De functie apply() staat bekend als uiterst nuttig om de snelheid van onze code te verbeteren wanneer we sommige functies op een matrix of een vector willen bedienen. Ik gebruik het, maar ik weet niet echt hoe ik het moet gebruiken.

Wat is het?

apply() is een R-functie die het mogelijk maakt om snelle bewerkingen op matrix, vector of array uit te voeren. De bewerkingen kunnen worden uitgevoerd op de lijnen, de kolommen of zelfs op beide.

Hoe werkt het?

Het patroon is heel eenvoudig: toepassen (variabele, marge, functie).
-variabele is de variabele waarop je de functie wilt toepassen.
-marge geeft aan of je wilt toepassen per rij (marge = 1), per kolom (marge = 2), of voor elk element (marge = 1:2). Marge kan nog groter zijn dan 2, als we werken met variabelen van dimensie groter dan twee.
-functie is de functie die je wilt toepassen op de elementen van je variabele.

Omdat ik denk dat het voorbeeld duidelijker is dan al het andere, is dit het belangrijkste voorbeeld om de functie apply() te begrijpen.

Inleiding:

# de matrix waar we aan gaan werken:

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


# zal de functie gemiddelde toepassen op alle elementen van elke rowapply
(a, 1, gemiddelde)
# [1] 6 7 8 9 10

# zal de functie gemiddelde toepassen op alle elementen van elke kolom
 (a, 2, gemiddelde)
# [1] 3 8 13

# zal de functiegemiddelde toepassen op alle elementen van elke kolom en van elke rij, d.w.z. elk elementair
(a, 1:2, gemiddelde)
# [,1] [,2] [,3]
# [1,] 1 6 11#
 [2,] 2 7 12#
 [3,] 3 8 13#
 [4,] 4 9 14#
 [5,] 5 10 15

We hebben net gewerkt aan de verschillende marges om de basismogelijkheden te laten zien. Maar zoals ik al zei, kunnen we ook aan andere variabelen werken, zoals een reeks van dimensie 3:

#apply() voor array van andere dimensie:
 a = array(1:8, dim = c(2,2,2))
van toepassing (a, 3, som)

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

Een paar parameters:

Capaciteit met enkele parameters. Hier is de belangrijkste motivatie waarom ik nooit gebruik maakte van apply(), ik had geen flauw idee hoe ik dat moest doen toen ik een paar parameters in een capaciteit had. Dit is heel eenvoudig, we hoeven alleen maar in de parameter de variabele te specificeren die consistent is.

Gebruik een zelfgemaakte functie:

We kunnen ook onze eigen functie gebruiken. We reproduceren bijvoorbeeld de functie-som (absoluut nutteloos, maar laten we het simpel houden!).

f1 = functie(x){
 return(sum(x))}

van toepassing zijn (a, 1, f1)

Verschillende parameters:
 Een functie met verschillende parameters. Hier is de belangrijkste reden waarom ik nooit apply()
gebruikte, ik wist niet hoe ik het moest doen als ik verschillende parameters in een functie had. Dit is vrij eenvoudig, we hoeven alleen maar in de parameter de variabele te specificeren die constant is.

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

#met de tweede parameter als optie toepassen
 (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

#met de eerste parameter als optie toepassen
 (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

Ik vertrouw erop dat deze modellen je zullen steunen. Door en door benut ik de capaciteit die van toepassing is() sinds ik deze modellen heb ervaren. Uiteraard zijn er tal van verschillende subtiliteiten die waardevol kunnen zijn, maar deze eerste modellen beheren de primair bruikbare denkbare uitkomsten van apply().