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() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다