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