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