본문 바로가기
컴퓨터 COMPUTER/Urban Data Analytics 데이터분석

[R 기초] Loop Function: lapply, sapply, tapply

by 매실이 maesiri 2021. 1. 20.

[R 기초] Loop Function: lapply, sapply, tapply 구분

1. lapply

두가지 argument가 필요하다. List x와 list x 에 적용할 function y. lapply를 이용하면 list x 에 있는 요소에 function y 를 한번에 적용할 수 있다. input의 자료형에 관계없이 무조건 list를 반환한다. 

 

예를 들어, 아래와 같은 리스트 a 에 들어있는 리스트 요소들에게 한번에 mean/max 등의 함수를 적용할 수 있다. 

x <- list(a = 1:4, b = c(2,4,6,7,20), c = 1:20)
l <- lapply(x, mean)
l

Output

> l
$a
[1] 2.5

$b
[1] 7.8

$c
[1] 10.5

 

2. sapply

sapply 는 lapply와 기능이 같지만 simplified 단순화된 결과를 반환한다. Matrix 반환도 가능하다.

> s <- sapply(x, mean)
> s
   a    b    c 
 2.5  7.8 10.5 
> class(s)
[1] "numeric"

 

3. tapply

tapply는 vector의 subset들에 한번에 function 을 적용한다. 그래서 lapply, sapply보다 하나의 argument가 더 필요하다. 

tapply(X, INDEX, FUN = NULL.....)

X: input vector

INDEX: is a factor or a list of factors/groups (or else they are coerced to factors)

FUN: a function to be applied

 

Iris 데이터에 접목해서 예를 들면, 아래와 같이 Species 에 따라 Length 의 Max 가 구해진 것을 볼 수 있다. 

> data(iris)
> tapply(iris$Sepal.Length, iris$Species, max)
    setosa versicolor  virginica 
       5.8        7.0        7.9 

도움이 되었다면 좋아요, 댓글 부탁드려요 :D

반응형