Como percorrer uma lista ou dados moldura com r aplicar funções
Quando seus dados estão na forma de uma lista, e você quiser executar cálculos em cada elemento dessa lista em R, a adequada Aplique
Conteúdo
Video: Curso de Python - Aula 46 - Listas III - eXcript
gt; lapply (íris, classe)
Como você sabe, quando você usa sapply (), R tentativas para simplificar os resultados para uma matriz ou vector:
gt; sapply (íris, classe) Sepal.Length Sepal.Width Petal.Length Petal.Width Espécie"numérico" "numérico" "numérico" "numérico" "fator"
Digamos que você queira calcular a média de cada coluna de íris:
Video: Funções
gt; sapply (íris, dizer) Sepal.Length Sepal.Width Petal.Length Petal.Width Species5.843333 3,057333 3,758000 1,199333 mensagem NAWarning: Em mean.default (X [[5L]], ...): argumento não é numérico ou lógico : retornar NA
Há um problema com esta linha de código. Ele lança uma mensagem de aviso porque espécies não é uma coluna numérica. Assim, você pode querer escrever uma pequena função dentro Aplique() que testa se o argumento é numérico. Se for, em seguida, calcular a média Scoreboard caso contrário, simplesmente devolvê N / D.
Video: Funções: Análise e construção de gráficos - LISTA 4
o DIVERSÃO argumento do Aplique() funções pode ser qualquer função, incluindo suas próprias funções personalizadas. Na verdade, você pode ir um passo além. Na verdade, é possível definir uma função dentro a DIVERSÃO chamada argumento para qualquer Aplique() função:
gt; sapply (íris, função (x) ifelse (is.numeric (x), média (x), NA)) Sepal.Length Sepal.Width Petal.Length Petal.Width Species5.843333 3,057333 3,758000 1,199333 NA
O que está acontecendo aqui? Você definiu uma função que recebe um único argumento X. E se X é numérico, ele retorna significa (x)- caso contrário, retorna N / D. Porque sapply () atravessa sua lista, cada coluna, por sua vez, é passado para a função e avaliados.
Quando você definir uma função sem nome como esta dentro de outra função, ele é chamado de função anônima. funções anônimas são úteis quando você deseja calcular algo bastante simples, mas você não necessariamente quer armazenar permanentemente essa função em seu espaço de trabalho.