본문 바로가기
9.유용한 함수모음/apply 함수

[R기초] apply 함수 (행, 열, 또는 각 원소에 함수를 일괄적용)

by makhimh 2020. 9. 23.
반응형

[R기초] apply 함수 (행, 열, 또는 각 원소에 함수를 일괄적용) 


먼저 데이터프레임을 하나 만들어봅시다.


> myd=cbind(r1=1:10,r2=101:110,r3=1001:1110)

> head(myd)

     r1  r2   r3

[1,]  1 101 1001

[2,]  2 102 1002

[3,]  3 103 1003

[4,]  4 104 1004

[5,]  5 105 1005

[6,]  6 106 1006


1) 가로 방향 일괄적용 (평균)


가로 방향의 평균을 구해봅시다. 아래와 같은 형식으로 입력합니다.


apply(데이터,방향,함수)


방향은 1이 가로방향, 2가 세로방향입니다. 


> apply(myd,1,mean)

  [1] 367.6667 368.6667 369.6667 370.6667 371.6667 372.6667 373.6667 374.6667 375.6667 376.6667 371.0000 372.0000 373.0000

 [14] 374.0000 375.0000 376.0000 377.0000 378.0000 379.0000 380.0000 374.3333 375.3333 376.3333 377.3333 378.3333 379.3333

 [27] 380.3333 381.3333 382.3333 383.3333 377.6667 378.6667 379.6667 380.6667 381.6667 382.6667 383.6667 384.6667 385.6667

 [40] 386.6667 381.0000 382.0000 383.0000 384.0000 385.0000 386.0000 387.0000 388.0000 389.0000 390.0000 384.3333 385.3333

 [53] 386.3333 387.3333 388.3333 389.3333 390.3333 391.3333 392.3333 393.3333 387.6667 388.6667 389.6667 390.6667 391.6667

 [66] 392.6667 393.6667 394.6667 395.6667 396.6667 391.0000 392.0000 393.0000 394.0000 395.0000 396.0000 397.0000 398.0000

 [79] 399.0000 400.0000 394.3333 395.3333 396.3333 397.3333 398.3333 399.3333 400.3333 401.3333 402.3333 403.3333 397.6667

 [92] 398.6667 399.6667 400.6667 401.6667 402.6667 403.6667 404.6667 405.6667 406.6667 401.0000 402.0000 403.0000 404.0000

[105] 405.0000 406.0000 407.0000 408.0000 409.0000 410.0000



2) 세로 방향 일괄적용 (합)


이번에는 세로 방향의 평균을 구해봅시다. 


> apply(myd,2,mean)

    r1     r2     r3 

   5.5  105.5 1055.5 



3) 각 원소에 적용 (루트)


각 원소에 함수를 적용하려면 방향에 c(1,2)를 입력하면 됩니다. 


> apply(myd,c(1,2),sqrt)

             r1       r2       r3

  [1,] 1.000000 10.04988 31.63858

  [2,] 1.414214 10.09950 31.65438

  [3,] 1.732051 10.14889 31.67018

  [4,] 2.000000 10.19804 31.68596

  [5,] 2.236068 10.24695 31.70173

  [6,] 2.449490 10.29563 31.71750

  [7,] 2.645751 10.34408 31.73326

  [8,] 2.828427 10.39230 31.74902

  [9,] 3.000000 10.44031 31.76476

 [10,] 3.162278 10.48809 31.78050

...


반응형

댓글