반응형

lapply()

  • 입력값으로 vector 또는 list를 받아 list를 반환한다.

즉 vector를 넣든, list를 넣든 결과값으로 list 형식의 자료형으로 return 해준다.

그리고 이 list자료를 다시 vector로 바꾸기 위해서는 unlist를 사용해주면 된다.

a <- lapply(1:10, function(x) x*2)
unlist(a)


> typeof(a)
[1] "list"

> typeof(unlist(a))
[1] "double"

 

 

Sapply()

  • lapply는 list를 반환하지만 sapply는 matrix 또는 vector로 반환한다.
> zz <- sapply(iris[,1:4], function(x){ x*5 })
> typeof(zz)
[1] "double"
> class(zz)
[1] "matrix"


> head(zz)
     Sepal.Length Sepal.Width Petal.Length Petal.Width
[1,]         25.5        17.5          7.0           1
[2,]         24.5        15.0          7.0           1
[3,]         23.5        16.0          6.5           1
[4,]         23.0        15.5          7.5           1
[5,]         25.0        18.0          7.0           1
[6,]         27.0        19.5          8.5           2


> zzz <- sapply(iris[1,1:4], function(x){ x*5 })
> typeof(zzz)
[1] "double"
> class(zzz)
[1] "numeric"

기본적으로 iris 데이터는 data.frame이지만, matrix형태로 반환해주는 것을 알 수 있다.

 

결론은, 반환하려는 자료형의 형태에 따라 lapply와 sapply를 다르게 사용해주면 된다.

반응형

+ Recent posts