18.1 apply()
함수
apply()
함수는 행렬이나 데이터 프레임의 행이나 열(이를 margin이라고 합니다)에 함수를 적용하는 데 가장 자주 사용됩니다. 그러나 예를 들어 행렬과 배열의 평균을 구하기 위해 일반 배열과 함께 사용할 수 있습니다. apply()
함수를 사용하는 것이 루프 함수를 사용하는 것보다 빠르지는 않지만 매우 간결하고 한 줄로 작성할 수 있습니다.
apply()
함수의 형식은 다음과 같습니다.
apply(X, MARGIN, FUN, ...)
x
: 행렬, 데이터 프레임 또는 배열입니다.MARGIN
: 함수가 적용될 첨자를 제공하는 벡터입니다. 예를 들어, 배열에서1
은 1차원(행)을,2
는 2차원(열)을,c(1, 2)
는 3차원 배열에서 행과 열을 나타냅니다.FUN
: 적용할 함수입니다....
: 함수에 전달되는 다른 인수를 위한 것입니다.
R에서 제공하는 mtcars
데이터 세트를 사용하여 예를 들어 보겠습니다.
# mtcars 데이터 세트의 첫 6개 행을 확인합니다.
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
# 각 열(2차원)의 평균을 구합니다.
apply(mtcars, 2, mean)
## mpg cyl disp hp drat wt qsec
## 20.090625 6.187500 230.721875 146.687500 3.596563 3.217250 17.848750
## vs am gear carb
## 0.437500 0.406250 3.687500 2.812500
# 각 행(1차원)의 합계를 구합니다. (이 데이터 세트에서 행의 합이 갖는 의미는 없지만,
# 행의 합을 구할 수 있음을 보여주기 위해 실행해 봅니다.)
apply(mtcars, 1, sum)
## Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
## 328.980 329.795 259.580 426.135
## Hornet Sportabout Valiant Duster 360 Merc 240D
## 590.310 385.540 656.920 270.980
## Merc 230 Merc 280 Merc 280C Merc 450SE
## 299.570 350.460 349.660 510.740
## Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
## 511.500 509.850 728.560 726.644
## Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
## 725.695 213.850 195.165 206.955
## Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
## 273.775 519.650 506.085 646.280
## Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
## 631.175 208.215 272.570 273.683
## Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
## 670.690 379.590 694.710 288.890
# 각 열(2차원)의 백분위수를 구합니다.
apply(mtcars, 2, quantile, probs = c(0.10, 0.25, 0.50, 0.75, 0.90))
## mpg cyl disp hp drat wt qsec vs am gear carb
## 10% 14.340 4 80.610 66.0 3.007 1.95550 15.5340 0 0 3 1
## 25% 15.425 4 120.825 96.5 3.080 2.58125 16.8925 0 0 3 2
## 50% 19.200 6 196.300 123.0 3.695 3.32500 17.7100 0 0 4 2
## 75% 22.800 8 326.000 180.0 3.920 3.61000 18.9000 1 1 4 4
## 90% 30.090 8 396.000 243.5 4.209 4.04750 19.9900 1 1 5 4