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 함수를 실행하는 방법