R'de bir matrisin veya veri çerçevesinin her satırına bir işlev nasıl uygulanır?
R’deki bir matrisin veya veri çerçevesinin her satırına bir işlev uygulamak için Apply() işlevini kullanabilirsiniz.
Bu işlev aşağıdaki temel sözdizimini kullanır:
uygula (X, KENAR, EĞLENCE)
Altın:
- X: Matrisin veya veri bloğunun adı.
- MARGIN: İşlemin gerçekleştirileceği boyut. Satır için 1, sütun için 2 kullanın.
- EĞLENCE: Uygulanacak işlev.
Aşağıdaki örnekler bu sözdiziminin pratikte nasıl kullanılacağını göstermektedir.
Örnek 1: Matrisin her satırına bir fonksiyon uygulayın
R’de aşağıdaki matrise sahip olduğumuzu varsayalım:
#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
Matrisin satırlarına farklı işlevler uygulamak için application() işlevini kullanabiliriz:
#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
Her satırın ortalamasını veya toplamını bulmak istiyorsanız yerleşik rowMeans() veya rowSums() işlevlerini kullanmanın daha hızlı olacağını unutmayın:
#find mean of each row rowMeans(mat) [1] 7 8 9 #find sum of each row rowSums(mat) [1] 35 40 45
Örnek 2: Veri çerçevesinin her satırına bir işlev uygulama
R’de aşağıdaki matrise sahip olduğumuzu varsayalım:
#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
Veri çerçevesinin satırlarına farklı işlevler uygulamak için Apply() işlevini kullanabiliriz:
#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
Matrislere benzer şekilde, her satırın ortalamasını veya toplamını bulmak istiyorsanız yerleşik rowMeans() veya rowSums() işlevlerini kullanmak daha hızlıdır:
#find mean of each row rowMeans(df) [1] 7 8 9 #find sum of each row rowSums(df) [1] 35 40 45
Ek kaynaklar
R’de satır numaraları nasıl alınır
R’de COUNTIF işlevi nasıl çalıştırılır
R’de ETOPLA işlevi nasıl çalıştırılır