Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

apply(), lapply(), sapply(), tapply() Função em R com Exemplos

By admin on Fevereiro 19, 2021

Este tutorial visa introduzir a colecção de funções apply(). A função apply() é a mais básica de todas as colecções. Também vamos aprender sapply(), lapply() e tapply(). A colecção apply() pode ser vista como um substituto para o laço.

A colecção apply() é agrupada com r pacote essencial se se instalar R com Anaconda. A função apply() pode ser alimentada com muitas funções para realizar uma aplicação redundante numa colecção de objectos (moldura de dados, lista, vector, etc.). O objectivo da função apply() é principalmente evitar utilizações explícitas de construções de laço. Podem ser utilizados para uma lista de entrada, matriz ou matriz e aplicar uma função. Qualquer função pode ser passada para apply().

Neste tutorial, irá aprender

  • função
  • função função função função função função função função função vector de fatias

  • tapply() function

apply() function

apply() toma a moldura de dados ou matriz como uma entrada e dá saída em vector, lista ou matriz. apply() A função é utilizada principalmente para evitar utilizações explícitas de construções de laço. É a mais básica de todas as colecções pode ser usada sobre uma matriz.

Esta função leva 3 argumentos:

apply(X, MARGIN, FUN)Here:-x: an array or matrix-MARGIN: take a value or range between 1 and 2 to define where to apply the function:-MARGIN=1`: the manipulation is performed on rows-MARGIN=2`: the manipulation is performed on columns-MARGIN=c(1,2)` the manipulation is performed on rows and columns-FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>

O exemplo mais simples é a soma de uma matriz sobre todas as colunas. O código aplica-se(m1, 2, soma) aplicará a função soma à matriz 5×6 e devolverá a soma de cada coluna acessível no conjunto de dados.

m1 <- matrix(C<-(1:10),nrow=5, ncol=6)m1a_m1 <- apply(m1, 2, sum)a_m1

Output:

Best practice: Armazenar os valores antes de os imprimir na consola.

lapply() function

lapply() function é útil para executar operações em objectos de lista e retorna um objecto de lista com o mesmo comprimento do conjunto original. lappy() retorna uma lista com o mesmo comprimento do objecto de lista de entrada, cada elemento do qual é o resultado da aplicação de FUN ao elemento de lista correspondente. lapply() toma lista, vector ou frame de dados como entrada e dá saída em lista.

lapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x

l em lapply() significa lista. A diferença entre lapply() e apply() situa-se entre o retorno da saída. A saída de lapply() é uma lista. lapply() pode ser usada para outros objectos como quadros de dados e listas.

função lapply() não necessita de MARGIN.

Um exemplo muito fácil pode ser alterar o valor da string de uma matriz para minúsculas com a função tolower. Construímos uma matriz com o nome dos filmes famosos. O nome está em formato de maiúsculas.

movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")movies_lower <-lapply(movies, tolower)str(movies_lower)

Output:

## List of 4## $:chr"spyderman"## $:chr"batman"## $:chr"vertigo"## $:chr"chinatown"

Podemos usar unlist() para converter a lista num vector.

movies_lower <-unlist(lapply(movies,tolower))str(movies_lower)

Saída:

## chr "spyderman" "batman" "vertigo" "chinatown"

função sapply()

função sapply() toma lista, vector ou frame de dados como entrada e dá saída em vector ou matriz. É útil para operações em objectos de lista e devolve um objecto de lista com o mesmo comprimento do conjunto original. função sapply() faz o mesmo trabalho que a função lapply() mas devolve um vector.

sapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x

Podemos medir a velocidade mínima e as distâncias de paragem dos carros a partir do conjunto de dados dos carros.

dt <- carslmn_cars <- lapply(dt, min)smn_cars <- sapply(dt, min)lmn_cars

Saída:

## $speed## 4## $dist## 2
smn_cars

Saída:

## speed dist ## 4 2
lmxcars <- lapply(dt, max)smxcars <- sapply(dt, max)lmxcars

Saída:

## $speed## 25## $dist## 120
smxcars

Saída:

## speed dist ## 25 120

Podemos usar uma função incorporada do utilizador em lapply() ou sapply(). Criamos uma função denominada avg para calcular a média do mínimo e máximo do vector.

avg <- function(x) { ( min(x) + max(x) ) / 2}fcars <- sapply(dt, avg)fcars

Saída

## speed dist## 14.5 61.0

função sapply() é mais eficiente do que a função lapply() na saída retornada porque sapply() armazena valores direclty num vector. No exemplo seguinte, veremos que nem sempre é este o caso.

Podemos resumir a diferença entre aplicar(), sapply() e `lapply() na tabela seguinte:

>>p>Argumentos

>>p>Data frame or matrix >/td>>>p>p>vector, list, array

>>p>p>lapply >/td>>>p>p>lapply(X, FUN)

>p>p>aplicar /td>>>p>sappy(X FUN) >>p>p>aplicar uma função a todos os elementos da entrada >>p>p>lista, vector ou moldura de dados

>p>Função >p>Objectivo p>Input p>Output

aplicar

p>aplicar(x, MARGIN, FUN) p>Aplicar uma função às linhas ou colunas ou a ambas
p>Aplicar uma função a todos os elementos da entrada p>Lista, vector ou moldura de dados

lista

vector ou matriz

Fatia vector

Podemos usar lapply() ou sapply() intercambiável para fatiar uma moldura de dados. Criamos uma função, abaixo da média(), que toma um vector de valores numéricos e retorna um vector que contém apenas os valores estritamente acima da média. Comparamos ambos os resultados com a função identical().

below_ave <- function(x) { ave <- mean(x) return(x)}dt_s<- sapply(dt, below_ave)dt_l<- lapply(dt, below_ave)identical(dt_s, dt_l)

Output:

## TRUE

função tapply()

tapply() calcula uma medida (média, mediana, min, max, etc.) ou uma função para cada variável de factor num vector. É uma função muito útil que lhe permite criar um subconjunto de um vector e depois aplicar algumas funções a cada um dos subconjuntos.

Parte do trabalho de um cientista ou investigador de dados é calcular resumos de variáveis. Por exemplo, medir a média ou agrupar dados com base numa característica. A maioria dos dados são agrupados por ID, cidade, países, etc. Resumir por grupo revela padrões mais interessantes.

Para compreender como funciona, vamos utilizar o conjunto de dados da íris. Este conjunto de dados é muito famoso no mundo da aprendizagem de máquinas. O objectivo deste conjunto de dados é prever a classe de cada uma das três espécies de flores: Sepal, Versicolor, Virginica. O conjunto de dados recolhe informação para cada espécie sobre o seu comprimento e largura.

Como um trabalho prévio, podemos calcular a mediana do comprimento para cada espécie. tapply() é uma forma rápida de efectuar este cálculo.

data(iris)tapply(iris$Sepal.Width, iris$Species, median)

Output:

## setosa versicolor virginica ## 3.4 2.8 3.0

Navegação de artigos

Act 29
Porquê a abertura do Burger King na Índia é uma coisa tão grande?

Deixe uma resposta Cancelar resposta

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

Artigos recentes

  • Firebush (Português)
  • Previsão da taxa de CD para 2021: As taxas manter-se-ão provavelmente baixas, mas poderão aumentar mais tarde no ano
  • Como estruturar a documentação do sistema de gestão da qualidade
  • Dor pélvica crónica e prostatite: sintomas, diagnóstico e tratamento
  • Mixed Berry Crisp (Português)
  • Wheat Ales (Americana)
  • Os benefícios da amamentação após um ano
  • É seguro despejar café moído na pia | Canalização atómica
  • Cool-Down After Your Workout
  • Our Work

Meta

  • Iniciar sessão
  • Feed de entradas
  • Feed de comentários
  • WordPress.org

Arquivo

  • Março 2021
  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com