So wenden sie eine funktion auf jede zeile einer matrix oder eines datenrahmens in r an


Sie können die Funktion apply() verwenden, um eine Funktion auf jede Zeile einer Matrix oder eines Datenrahmens in R anzuwenden.

Diese Funktion verwendet die folgende grundlegende Syntax:

anwenden (X, MARGIN, FUN)

Gold:

  • X: Name der Matrix oder des Datenblocks.
  • MARGIN: Dimension, für die die Operation ausgeführt werden soll. Verwenden Sie 1 für Zeile, 2 für Spalte.
  • SPASS: Die anzuwendende Funktion.

Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis anwenden können.

Beispiel 1: Wenden Sie eine Funktion auf jede Zeile der Matrix an

Angenommen, wir haben die folgende Matrix in 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

Mit der Funktion apply() können wir verschiedene Funktionen auf die Zeilen der Matrix anwenden:

 #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

Beachten Sie, dass es schneller ist, die integrierten Funktionen rowMeans() oder rowSums() zu verwenden, wenn Sie den Durchschnitt oder die Summe jeder Zeile ermitteln möchten:

 #find mean of each row
rowMeans(mat)

[1] 7 8 9

#find sum of each row
rowSums(mat)

[1] 35 40 45

Beispiel 2: Wenden Sie eine Funktion auf jede Zeile des Datenrahmens an

Angenommen, wir haben die folgende Matrix in 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

Mit der Funktion apply() können wir verschiedene Funktionen auf die Zeilen des Datenrahmens anwenden:

 #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

Ähnlich wie bei Matrizen ist es schneller, die integrierten Funktionen rowMeans() oder rowSums() zu verwenden, wenn Sie den Durchschnitt oder die Summe jeder Zeile ermitteln möchten:

 #find mean of each row
rowMeans(df)

[1] 7 8 9

#find sum of each row
rowSums(df)

[1] 35 40 45

Zusätzliche Ressourcen

So rufen Sie Zeilennummern in R ab
So führen Sie eine ZÄHLENWENN-Funktion in R aus
So führen Sie eine SUMIF-Funktion in R aus

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert