Gjelder (), lapply (), sapply (), tapply () Funksjon i R med eksempler

Innholdsfortegnelse:

Anonim

Denne veiledningen tar sikte på å introdusere funksjonssamlingen Apply (). Apply () -funksjonen er den mest grunnleggende av all samling. Vi lærer også sapply (), lapply () og tapply (). Bruk-samlingen kan sees på som en erstatning for løkken.

Apply () -samlingen leveres med r viktig pakke hvis du installerer R med Anaconda. Bruk () -funksjonen kan mates med mange funksjoner for å utføre overflødig applikasjon på en samling objekter (dataramme, liste, vektor osv.). Formålet med Apply () er først og fremst å unngå eksplisitt bruk av loopkonstruksjoner. De kan brukes til en inngangsliste, matrise eller matrise og bruke en funksjon. Enhver funksjon kan overføres til anvendelse ().

I denne veiledningen vil du lære

  • bruke () funksjon
  • lapply () -funksjon
  • sapply () -funksjon
  • Skjær vektor
  • tapply () -funksjon

bruke () funksjon

Apply () tar dataramme eller matrise som inngang og gir utdata i vektor, liste eller matrise. Apply () Funksjonen brukes primært for å unngå eksplisitt bruk av loopkonstruksjoner. Det er den mest grunnleggende av alle samlinger som kan brukes over en matrise.

Denne funksjonen tar 3 argumenter:

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>

Det enkleste eksemplet er å summere en matrise over alle kolonnene. Koden gjelder (m1, 2, sum) vil bruke sumfunksjonen til matrisen 5x6 og returnere summen av hver kolonne som er tilgjengelig i datasettet.

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

Produksjon:

Beste fremgangsmåten: Lagre verdiene før du skriver dem ut på konsollen.

lapply () -funksjon

lapply () -funksjonen er nyttig for å utføre operasjoner på listeobjekter og returnerer et listeobjekt med samme lengde på originalsettet. lappy () returnerer en liste med samme lengde som inngangslisteobjektet, hvor hvert element er resultatet av å bruke FUN til det tilsvarende elementet i listen. lapply () tar liste, vektor eller dataramme som input og gir output i listen.

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

Jeg i lapply () står for liste. Forskjellen mellom lapply () og Apply () ligger mellom output return. Resultatet av lapply () er en liste. lapply () kan brukes til andre objekter som datarammer og lister.

lapply () -funksjonen trenger ikke MARGIN.

Et veldig enkelt eksempel kan være å endre strengverdien til en matrise til små bokstaver med lavere funksjon. Vi konstruerer en matrise med navnet på de berømte filmene. Navnet er i store bokstaver.

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

Produksjon:

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

Vi kan bruke unlist () til å konvertere listen til en vektor.

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

Produksjon:

## chr [1:4] "spyderman" "batman" "vertigo" "chinatown"

sapply () -funksjon

sapply () -funksjonen tar liste, vektor eller dataramme som inngang og gir utdata i vektor eller matrise. Det er nyttig for operasjoner på listeobjekter og returnerer et listeobjekt med samme lengde på originalsettet. sapply () -funksjonen gjør den samme jobben som lapply () -funksjonen, men returnerer en vektor.

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

Vi kan måle minimumshastighet og stoppavstand for biler fra datasettet.

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

Produksjon:

## $speed## [1] 4## $dist## [1] 2
smn_cars

Produksjon:

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

Produksjon:

## $speed## [1] 25## $dist## [1] 120
smxcars

Produksjon:

## speed dist## 25 120

Vi kan bruke en innebygd brukerfunksjon til lapply () eller sapply (). Vi oppretter en funksjon som heter avg for å beregne gjennomsnittet av minimum og maksimum for vektoren.

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

Produksjon

## speed dist## 14.5 61.0

sapply () -funksjonen er mer effektiv enn lapply () i den returnerte utgangen fordi sapply () lagrer verdier direkte i en vektor. I neste eksempel vil vi se at dette ikke alltid er tilfelle.

Vi kan oppsummere forskjellen mellom apply (), sapply () og `lapply () i følgende tabell:

Funksjon

Argumenter

Objektiv

Inngang

Produksjon

søke om

gjelder (x, MARGIN, FUN)

Bruk en funksjon på radene eller kolonnene eller begge deler

Dataramme eller matrise

vektor, liste, matrise

lapply

lapply (X, FUN)

Bruk en funksjon på alle elementene i inngangen

Liste, vektor eller dataramme

liste

sapply

sappy (X FUN)

Bruk en funksjon på alle elementene i inngangen

Liste, vektor eller dataramme

vektor eller matrise

Skjær vektor

Vi kan bruke utskiftbare lapply () eller sapply () for å skjære en dataramme. Vi oppretter en funksjon under gjennomsnittet () som tar en vektor med numeriske verdier og returnerer en vektor som bare inneholder verdiene som er strengt over gjennomsnittet. Vi sammenligner begge resultatene med den identiske () funksjonen.

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

Produksjon:

## [1] TRUE

tapply () -funksjon

tapply () beregner et mål (gjennomsnitt, median, min, maks, etc ...) eller en funksjon for hver faktorvariabel i en vektor. Det er en veldig nyttig funksjon som lar deg lage et delsett av en vektor og deretter bruke noen funksjoner på hvert av delsettene.

tapply(X, INDEX, FUN = NULL)Arguments:-X: An object, usually a vector-INDEX: A list containing factor-FUN: Function applied to each element of x

En del av jobben til en datavitenskapsmann eller forskere er å beregne sammendrag av variabler. For eksempel måle gjennomsnitt eller gruppedata basert på en karakteristikk. De fleste av dataene er gruppert etter ID, by, land og så videre. Oppsummering over gruppe avslører mer interessante mønstre.

For å forstå hvordan det fungerer, la oss bruke iris-datasettet. Dette datasettet er veldig kjent i verden av maskinlæring. Hensikten med dette datasettet er å forutsi klassen til hver av de tre blomsteartene: Sepal, Versicolor, Virginica. Datasettet samler informasjon for hver art om lengden og bredden.

Som et tidligere arbeid kan vi beregne medianen på lengden for hver art. tapply () er en rask måte å utføre denne beregningen på.

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

Produksjon:

## setosa versicolor virginica## 3.4 2.8 3.0