data(birthwt, package = "MASS")
3 Függvények
A függvényekről
3.1 Függvényhívások
Függvény úgy hívható, hogy megadjuk a nevét, majd utána zárójelben az argumentumát, vagy argumentumait (lehet, hogy egy sincs, de a zárójelet ekkor is ki kell írni):
quantile( birthwt$bwt )
0% 25% 50% 75% 100%
709 2414 2977 3487 4990
Függvényről súgó a kérdőjellel kapható (két kérdőjel az összes ismert függvényt végigkeresi, akár névtöredékre is): ?quantile
.
Aminél egyenlőségjellel adva van érték a specifikációban, ott az default-ként viselkedik, nem kötelező megadni, viszont a default-tal nem rendelkezőket muszáj:
quantile()
Error in quantile.default(): argument "x" is missing, with no default
Ha több argumentumot adunk meg, akkor azok a felsorolás sorrendjében osztódnak ki:
quantile( birthwt$bwt, 0.23 )
23%
2387.96
quantile( birthwt$bwt, c( 0.23, 0.5, 0.6 ) )
23% 50% 60%
2387.96 2977.00 3169.40
Argumentumra hivatkozhatunk névvel is, ez esetben nem kell a felsorolás sorrendjével törődnünk:
quantile( birthwt$bwt, c( 0.23, 0.5, 0.6 ), type = 6 )
23% 50% 60%
2381 2977 3175
quantile( probs = c( 0.23, 0.5, 0.6 ), type = 6, x = birthwt$bwt )
23% 50% 60%
2381 2977 3175
Az általános gyakorlat az, hogy az első két-három argumentumot adhatjuk meg név nélkül (ezeknél elvárható, hogy fejből is tudja az ember, hogy mit jelent), de a többinél elegánsabb, ha mindenképp adunk nevet (tehát akkor is, ha sorrendben írjuk).
Egy függvény hívásánál az argumentumai elkülöníthetőek egy listába, majd ugyanaz a hatása a do.call
használatával elérhető (első argumentum a függvény, második az átadandó argumentumok listája):
quantile( probs = c( 0.23, 0.5, 0.6 ), type = 6, x = birthwt$bwt )
23% 50% 60%
2381 2977 3175
do.call( quantile, list( probs = c( 0.23, 0.5, 0.6 ), type = 6, x = birthwt$bwt ) )
23% 50% 60%
2381 2977 3175
Ez akkor jön jól, ha nem tudjuk előre, hogy mik az argumentumok (akár azt sem, hogy hány darab van belőlük!), pl. mert egy lapply
-jal gyártottuk le, lásd később:
rbind( c( 1, 2 ), c( 3, 4 ), c( 5, 6 ) )
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
do.call( rbind, lapply( birthwt, function( x ) c( mean( x ), median( x ) ) ) )
[,1] [,2]
low 3.121693e-01 0
age 2.323810e+01 23
lwt 1.298148e+02 121
race 1.846561e+00 1
smoke 3.915344e-01 0
ptl 1.957672e-01 0
ht 6.349206e-02 0
ui 1.481481e-01 0
ftv 7.936508e-01 0
bwt 2.944587e+03 2977
3.2 Saját függény definiálása
Ilyet is lehet.