Lapply versus sapply in r: wat is het verschil?


De functie lapply() in R kan worden gebruikt om een functie toe te passen op elk element van een lijst, vector of dataframe en dienovereenkomstig een lijst te verkrijgen.

De functie sapply() kan ook worden gebruikt om een functie toe te passen op elk element van een lijst, vector of dataframe, maar retourneert als resultaat een vector .

De volgende voorbeelden laten zien hoe u elk van deze functies in R kunt gebruiken.

Voorbeeld: Apply() gebruiken in R

De volgende code laat zien hoe u de functie lapply() gebruikt om elke waarde in elke kolom van een dataframe met 2 te vermenigvuldigen:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
lapply(df, function (df) df*2)

$x
[1] 2 4 4 6 10

$y
[1] 8 8 12 14 16

$z
[1] 14 14 18 18 18

Merk op dat het resultaat een lijst is.

Voorbeeld: hoe u sapply() gebruikt in R

De volgende code laat zien hoe u de functie sapply() gebruikt om elke waarde in elke kolom van een dataframe met 2 te vermenigvuldigen:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
sapply(df, function (df) df*2)

      X Y Z
[1,] 2 8 14
[2,] 4 8 14
[3,] 4 12 18
[4,] 6 14 18
[5,] 10 16 18

Merk op dat het resultaat een vectormatrix is.

Merk op dat u as.data.frame() kunt gebruiken om een dataframe te retourneren in plaats van een matrix:

 #multiply each value in each column by 2 and return a data frame
as. data . frame (sapply(df, function (df) df*2))

   X Y Z
1 2 8 14
2 4 8 14
3 4 12 18
4 6 14 18
5 10 16 18

Wanneer lapply() of sapply() gebruiken

In 99% van de gevallen zul je sapply() gebruiken omdat het logischer is om een vector of matrix terug te geven.

In zeldzame omstandigheden kan het echter nodig zijn om in plaats daarvan lapply() te gebruiken als u wilt dat het resultaat een lijst is.

Merk op dat sapply() en lappy() dezelfde bewerkingen uitvoeren op een vector-, matrix- of dataframe. Het enige verschil zit in de klasse van het geretourneerde object.

Aanvullende bronnen

Hoe u een functie toepast op elke dataframerij in R
Hoe de functie colSums() in R te gebruiken
Hoe de functie rowSums() in R te gebruiken

Einen Kommentar hinzufügen

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