R에서 행렬이나 데이터 프레임의 각 행에 함수를 적용하는 방법


Apply() 함수를 사용하여 R의 행렬 또는 데이터 프레임의 각 행에 함수를 적용할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

적용(X, 마진, FUN)

금:

  • X: 행렬 또는 데이터 블록의 이름입니다.
  • MARGIN: 작업을 수행할 차원입니다. 행에는 1, 열에는 2를 사용합니다.
  • FUN : 적용할 기능입니다.

다음 예에서는 이 구문을 실제로 사용하는 방법을 보여줍니다.

예제 1: 행렬의 각 행에 함수 적용

R에 다음과 같은 행렬이 있다고 가정합니다.

 #create matrix
mat <- matrix(1:15, nrow= 3 )

#view matrix
mast

     [,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15

apply() 함수를 사용하여 행렬의 행에 다양한 함수를 적용할 수 있습니다.

 #find mean of each row
apply(mat, 1, mean)

[1] 7 8 9

#find sum of each row
apply(mat, 1, sum)

[1] 35 40 45

#find standard deviation of each row
apply(mat, 1, sd)

[1] 4.743416 4.743416 4.743416

#multiply the value in each row by 2 (using t() to transpose the results)
t(apply(mat, 1, function (x) x * 2))

     [,1] [,2] [,3] [,4] [,5]
[1,] 2 8 14 20 26
[2,] 4 10 16 22 28
[3,] 6 12 18 24 30

#normalize every row to 1 (using t() to transpose the results)
t(apply(mat, 1, function (x) x / sum(x) ))

           [,1] [,2] [,3] [,4] [,5]
[1,] 0.02857143 0.1142857 0.2 0.2857143 0.3714286
[2,] 0.05000000 0.1250000 0.2 0.2750000 0.3500000
[3,] 0.06666667 0.1333333 0.2 0.2666667 0.3333333

각 행의 평균이나 합계를 찾으려면 내장된 rowMeans() 또는 rowSums() 함수를 사용하는 것이 더 빠릅니다.

 #find mean of each row
rowMeans(mat)

[1] 7 8 9

#find sum of each row
rowSums(mat)

[1] 35 40 45

예시 2: 데이터 프레임의 각 행에 함수 적용

R에 다음과 같은 행렬이 있다고 가정합니다.

 #create data frame
df <- data. frame (var1=1:3,
                 var2=4:6,
                 var3=7:9,
                 var4=10:12,
                 var5=13:15)

#view data frame
df

  var1 var2 var3 var4 var5
1 1 4 7 10 13
2 2 5 8 11 14
3 3 6 9 12 15

apply() 함수를 사용하여 데이터 프레임의 행에 다양한 함수를 적용할 수 있습니다.

 #find mean of each row
apply(df, 1, mean)

[1] 7 8 9

#find sum of each row
apply(df, 1, sum)

[1] 35 40 45

#find standard deviation of each row
apply(df, 1, sd)

[1] 4.743416 4.743416 4.743416

#multiply the value in each row by 2 (using t() to transpose the results)
t(apply(df, 1, function (x) x * 2))

     var1 var2 var3 var4 var5
[1,] 2 8 14 20 26
[2,] 4 10 16 22 28
[3,] 6 12 18 24 30

#normalize every row to 1 (using t() to transpose the results)
t(apply(df, 1, function (x) x / sum(x) ))

           var1 var2 var3 var4 var5
[1,] 0.02857143 0.1142857 0.2 0.2857143 0.3714286
[2,] 0.05000000 0.1250000 0.2 0.2750000 0.3500000
[3,] 0.06666667 0.1333333 0.2 0.2666667 0.3333333

행렬과 유사하게, 각 행의 평균이나 합계를 찾으려면 내장된 rowMeans() 또는 rowSums() 함수를 사용하는 것이 더 빠릅니다.

 #find mean of each row
rowMeans(df)

[1] 7 8 9

#find sum of each row
rowSums(df)

[1] 35 40 45

추가 리소스

R에서 줄 번호를 검색하는 방법
R에서 COUNTIF 함수를 실행하는 방법
R에서 SUMIF 함수를 실행하는 방법

의견을 추가하다

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