Verwendung von do.call in r (3 beispiele)


Sie können do.call() in R verwenden, um eine bestimmte Funktion auf eine Liste als Ganzes anzuwenden.

Diese Funktion verwendet die folgende grundlegende Syntax:

 do. call (function, list)

Die folgenden Beispiele zeigen, wie man do.call() in der Praxis verwendet.

Beispiel 1: Verwenden Sie do.call() mit sum

Der folgende Code zeigt, wie man mit do.call() die Summe der Werte in einer Liste berechnet:

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#calculate sum of values in list
do. call (sum, values_list)

[1] 48

Die Summe der Werte in der Liste beträgt 48 .

Beachten Sie, dass wir eine Fehlermeldung erhalten würden, wenn wir einfach versuchen würden, sum() direkt mit der Liste zu verwenden:

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#attempt to sum values in list
sum(values_list)

Error in sum(values_list): invalid 'type' (list) of argument

Beispiel 2: Verwenden Sie do.call() mit Durchschnitt

Der folgende Code zeigt, wie man mit do.call() den Durchschnitt der Werte in einer Liste berechnet:

 #define argument to use in do.call
args <- list(1:20, na. rm = TRUE )

#calculate mean of values in list
do. call (mean, args)

[1] 10.5

Der Durchschnitt der Werte in der Liste beträgt 10,5 .

Beachten Sie, dass wir eine Fehlermeldung erhalten würden, wenn wir einfach versuchen würden, Mean() direkt mit der Liste zu verwenden:

 #attempt to calculate mean of values in list
mean(list(1:20), na. rm = TRUE )

[1] NA
Warning message:
In mean.default(list(1:20), na.rm = TRUE):
  argument is not numeric or logical: returning NA

Beispiel 3: Verwenden Sie do.call() mit rbind

Der folgende Code zeigt, wie man do.call() verwendet, um mehrere Datenrahmen in R zu verbinden:

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#row bind together all three data frames
do. call (rbind, df_list)

  team points
1 to 22
2 B 27
3 C 38
4 D 22
5 E 14
6 F 20
7 G 11
8:15 a.m.
9 I 18

Das Ergebnis ist ein Datenrahmen, der die Zeilen aus jedem der drei Datenrahmen enthält.

Beachten Sie, dass wir den gewünschten Datenrahmen nicht erhalten würden, wenn wir versuchen würden, rbind() direkt mit der Liste zu verwenden:

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#attmempt to row bind together all three data frames
rbind(df_list)

        [,1] [,2] [,3]  
df_list List,2 List,2 List,2

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere gängige Funktionen in R verwenden:

So verwenden Sie die Funktionen „Paste“ und „Paste0“ in R
So verwenden Sie die Funktion replace() in R
So verwenden Sie die View()-Funktion in R
So verwenden Sie die rep()-Funktion in R

Einen Kommentar hinzufügen

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