R의 lapply와 sapply: 차이점은 무엇입니까?
R의 lapply() 함수는 목록, 벡터 또는 데이터 프레임의 각 요소에 함수를 적용하고 그에 따라 목록을 얻는 데 사용할 수 있습니다.
sapply() 함수는 목록, 벡터 또는 데이터 프레임의 각 요소에 함수를 적용하는 데 사용할 수도 있지만 결과로 벡터를 반환합니다.
다음 예제에서는 R에서 이러한 각 함수를 사용하는 방법을 보여줍니다.
예: R에서 apply()를 사용하는 방법
다음 코드는 lapply() 함수를 사용하여 데이터 프레임의 각 열에 있는 각 값에 2를 곱하는 방법을 보여줍니다.
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 lapply(df, function (df) df*2) $x [1] 2 4 4 6 10 $y [1] 8 8 12 14 16 $z [1] 14 14 18 18 18
결과는 목록입니다.
예: R에서 sapply()를 사용하는 방법
다음 코드는 sapply() 함수를 사용하여 데이터 프레임의 각 열에 있는 각 값에 2를 곱하는 방법을 보여줍니다.
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 sapply(df, function (df) df*2) X Y Z [1,] 2 8 14 [2,] 4 8 14 [3,] 4 12 18 [4,] 6 14 18 [5,] 10 16 18
결과는 벡터 행렬입니다.
as.data.frame()을 사용하여 행렬 대신 데이터 프레임을 반환할 수 있습니다.
#multiply each value in each column by 2 and return a data frame as. data . frame (sapply(df, function (df) df*2)) X Y Z 1 2 8 14 2 4 8 14 3 4 12 18 4 6 14 18 5 10 16 18
lapply() 또는 sapply()를 사용하는 경우
99%의 경우 벡터나 행렬을 반환하는 것이 더 합리적이기 때문에 sapply()를 사용하게 됩니다.
그러나 드문 경우지만 결과를 목록으로 만들려면 lapply()를 대신 사용해야 할 수도 있습니다.
sapply() 및 lappy()는 벡터, 행렬 또는 데이터 프레임에 대해 동일한 작업을 수행합니다. 유일한 차이점은 반환된 개체의 클래스에 있습니다.
추가 리소스
R의 각 데이터 프레임 행에 함수를 적용하는 방법
R에서 colSums() 함수를 사용하는 방법
R에서 rowSums() 함수를 사용하는 방법