Do.call gebruiken in r (3 voorbeelden)


U kunt do.call() in R gebruiken om een bepaalde functie op een lijst als geheel toe te passen.

Deze functie gebruikt de volgende basissyntaxis:

 do. call (function, list)

De volgende voorbeelden laten zien hoe u do.call() in de praktijk kunt gebruiken.

Voorbeeld 1: Gebruik do.call() met sum

De volgende code laat zien hoe u do.call() gebruikt om de som van waarden in een lijst te berekenen:

 #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

De som van de waarden in de lijst is 48 .

Merk op dat we een foutmelding zouden krijgen als we simpelweg sum() rechtstreeks met de lijst zouden proberen te gebruiken:

 #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

Voorbeeld 2: Gebruik do.call() met gemiddelde

De volgende code laat zien hoe u do.call() gebruikt om het gemiddelde van de waarden in een lijst te berekenen:

 #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

Het gemiddelde van de waarden in de lijst is 10,5 .

Merk op dat we een foutmelding zouden krijgen als we Mean() eenvoudigweg zouden proberen te gebruiken met de lijst:

 #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

Voorbeeld 3: Gebruik do.call() met rbind

De volgende code laat zien hoe u do.call() gebruikt om meerdere dataframes in R te 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

Het resultaat is een dataframe dat de rijen van elk van de drie dataframes bevat.

Merk op dat we niet het gewenste dataframe zouden ontvangen als we rbind() rechtstreeks met de lijst zouden proberen te gebruiken:

 #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

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende functies in R kunt gebruiken:

Hoe de functies plakken en plakken0 in R te gebruiken
Hoe de functie Replace() in R te gebruiken
Hoe de View()-functie in R te gebruiken
Hoe de rep()-functie in R te gebruiken

Einen Kommentar hinzufügen

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