Lapply vs sapply em r: qual a diferença?


A função lapply() em R pode ser usada para aplicar uma função a cada elemento de uma lista, vetor ou quadro de dados e obter uma lista de acordo.

A função sapply() também pode ser usada para aplicar uma função a cada elemento de uma lista, vetor ou quadro de dados, mas retorna um vetor como resultado.

Os exemplos a seguir mostram como usar cada uma dessas funções em R.

Exemplo: como usar apply() em R

O código a seguir mostra como usar a função lapply() para multiplicar cada valor em cada coluna de um quadro de dados por 2:

 #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

Observe que o resultado é uma lista.

Exemplo: como usar sapply() em R

O código a seguir mostra como usar a função sapply() para multiplicar cada valor em cada coluna de um quadro de dados por 2:

 #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

Observe que o resultado é uma matriz vetorial.

Observe que você pode usar as.data.frame() para retornar um quadro de dados em vez de uma matriz:

 #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

Quando usar lapply() ou sapply()

Em 99% dos casos você usará sapply() porque faz mais sentido retornar um vetor ou matriz.

No entanto, em raras circunstâncias, você pode precisar usar lapply() se quiser que o resultado seja uma lista.

Observe que sapply() e lappy() executam as mesmas operações em um vetor, matriz ou quadro de dados. A única diferença está na classe do objeto retornado.

Recursos adicionais

Como aplicar uma função a cada linha do quadro de dados em R
Como usar a função colSums() em R
Como usar a função rowSums() em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *