이경수 선생님의 수학실험실

Loop Functions - lapply 본문

R

Loop Functions - lapply

(이경수) 2021. 4. 15. 20:31

1. Loop Functions - lapply

 

lapply 함수는 리스트 또는 벡터에 적용하는 함수로써 아래 예와 같이 lapply(x,function)의 형태로 호출한다. lapply 함수는 리스트의 각 요소마다 함수를 적용하며, 그 결과를 리스트의 형식으로 반환한다. 아래 두 예는 리스트의 각 요소에 mean함수를 적용한 결과를 나타내고 있다.

> x <- list(a=1:10, b=2:7)
> lapply(x, mean)
$a
[1] 5.5

$b
[1] 4.5

 

> x <- list(a=1:5, b=rnorm(5), c=rnorm(10,5))
> lapply(x, mean)
$a
[1] 3

$b
[1] -0.1182277

$c
[1] 5.429224

 

2. Loop Functions - apply

apply 함수는 행렬을 포함한 배열에 적용하는 함수로써 호출형식은 apply(x,margin,function)이다. 여기서 margin=1이면 각 행에 대해 함수를 적용하고, margin=2이면 각 열에 대해 함수를 적용한다. 아래 예는 1부터 50까지의 정수를 성분으로 하는 10 × 5 행렬에서 행과 열 방향으로의 합과 평균을 구한 것이다.

> x <- matrix(1:50,10,5)
> apply(x,1,sum)
 [1] 105 110 115 120 125 130 135 140 145 150
> apply(x,2,sum)
[1]  55 155 255 355 455
> apply(x,2,mean)
[1]  5.5 15.5 25.5 35.5 45.5
> x
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1   11   21   31   41
 [2,]    2   12   22   32   42
 [3,]    3   13   23   33   43
 [4,]    4   14   24   34   44
 [5,]    5   15   25   35   45
 [6,]    6   16   26   36   46
 [7,]    7   17   27   37   47
 [8,]    8   18   28   38   48
 [9,]    9   19   29   39   49
[10,]   10   20   30   40   50

 

다음 예에서 x는 표준정규분포에서 임의로 추출된 200개의 데이터로 채워진  20 × 10 행렬이다. 이 행렬의 각 행에 25%, 75%에 해당하는 데이터를 출력하는 quantile(사분위수)함수를 적용한 것이다.

> x <- matrix(rnorm(200), 20, 10)
> apply(x,1,quantile, probs=c(0.25,0.75))
           [,1]       [,2]       [,3]        [,4]
25% -0.85988791 -0.4054635 -0.5632274 -0.01264364
75% -0.03604571  0.8317090  0.5496814  1.07384233
          [,5]        [,6]       [,7]        [,8]
25% -0.6047505 -0.01576008 -0.7962243 -1.12751879
75%  0.9501326  1.33665211  0.6585633 -0.04778156
          [,9]       [,10]      [,11]      [,12]
25% -1.4503640 -0.07103027 -1.2727680 -0.2921057
75%  0.6247831  0.60133156  0.4038558  0.5207159
         [,13]       [,14]      [,15]      [,16]
25% -1.1272363 -1.19979426 -1.4606513 -0.6356902
75%  0.3248387 -0.05914067  0.5208336  0.3070407
         [,17]      [,18]       [,19]      [,20]
25% -0.3613290 -0.4694773 -0.08233558 -1.3095835
75%  0.9298255  0.1528634  0.74607664 -0.1198479

'R' 카테고리의 다른 글

The str Function(What is in this Object?) & summary Function  (0) 2021.04.16
Loop Functions - split  (0) 2021.04.15
Function  (0) 2021.04.15
Control Structures_Next  (0) 2021.04.15
Control Structure_if else & for loops  (0) 2021.04.15
Comments