Anvend (), lapply (), sapply (), tapply () Funktion i R med eksempler

Indholdsfortegnelse:

Anonim

Denne vejledning sigter mod at introducere funktionssamlingen Apply (). Funktionen Apply () er den mest basale i hele samlingen. Vi lærer også sapply (), lapply () og tapply (). Den anvendte samling kan ses som en erstatning for sløjfen.

Apply () -samlingen leveres med r-essentiel pakke, hvis du installerer R med Anaconda. Funktionen Apply () kan fødes med mange funktioner til at udføre overflødig anvendelse på en samling objekter (dataramme, liste, vektor osv.). Formålet med anvendelse () er primært at undgå eksplicit brug af loopkonstruktioner. De kan bruges til en inputliste, matrix eller matrix og anvende en funktion. Enhver funktion kan overføres til anvendelse ().

I denne vejledning lærer du

  • anvend () funktion
  • lapply () funktion
  • sapply () funktion
  • Skive vektor
  • tapply () funktion

anvend () funktion

Apply () tager dataramme eller matrix som input og giver output i vektor, liste eller array. anvend () Funktionen bruges primært til at undgå eksplicit brug af loopkonstruktioner. Det er den mest basale af alle samlinger, der kan bruges over en matrix.

Denne funktion tager 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 eksempel er at summere en matrix over alle kolonnerne. Koden gælder (m1, 2, sum) anvender sumfunktionen til matrixen 5x6 og returnerer summen af ​​hver kolonne, der er tilgængelig i datasættet.

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

Produktion:

Bedste fremgangsmåde: Gem værdierne, før de udskrives på konsollen.

lapply () funktion

lapply () -funktionen er nyttig til at udføre operationer på listeobjekter og returnerer et listeobjekt med samme længde som originalsættet. lappy () returnerer en liste med den samme længde som inputlisteobjekt, hvor hvert element er resultatet af anvendelse af FUN på det tilsvarende element i listen. lapply () tager liste, vektor eller dataramme som input og giver output i listen.

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

l i lapply () står for liste. Forskellen mellem lapply () og Apply () ligger mellem output return. Outputtet fra lapply () er en liste. lapply () kan bruges til andre objekter som datarammer og lister.

lapply () -funktionen behøver ikke MARGIN.

Et meget let eksempel kan være at ændre strengværdien af ​​en matrix til små bogstaver med lavere funktion. Vi konstruerer en matrix med navnet på de berømte film. Navnet er i store bogstaver.

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

Produktion:

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

Vi kan bruge unlist () til at konvertere listen til en vektor.

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

Produktion:

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

sapply () funktion

sapply () -funktionen tager liste, vektor eller dataramme som input og giver output i vektor eller matrix. Det er nyttigt til operationer på listeobjekter og returnerer et listeobjekt med samme længde af originalsættet. sapply () -funktionen gør det samme job som lapply () -funktionen, 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 bilens minimumshastighed og stopafstand fra bilens datasæt.

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

Produktion:

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

Produktion:

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

Produktion:

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

Produktion:

## speed dist## 25 120

Vi kan bruge en brugerindbygget funktion til lapply () eller sapply (). Vi opretter en funktion ved navn avg for at beregne gennemsnittet af vektorens minimum og maksimum.

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

Produktion

## speed dist## 14.5 61.0

sapply () -funktionen er mere effektiv end lapply () i den returnerede output, fordi sapply () gemmer værdier direkte i en vektor. I det næste eksempel vil vi se, at dette ikke altid er tilfældet.

Vi kan sammenfatte forskellen mellem Apply (), Sapply () og `lapply () i følgende tabel:

Fungere

Argumenter

Objektiv

Indgang

Produktion

ansøge

anvend (x, MARGIN, FUN)

Anvend en funktion på rækkerne eller kolonnerne eller begge dele

Dataramme eller matrix

vektor, liste, matrix

lapply

lapply (X, FUN)

Anvend en funktion på alle elementerne i input

Liste, vektor eller dataramme

liste

sapply

sappy (X FUN)

Anvend en funktion på alle elementerne i input

Liste, vektor eller dataramme

vektor eller matrix

Skive vektor

Vi kan bruge udskifteligt lapply () eller sapply () til at skære en dataramme. Vi opretter en funktion, under_gennemsnit (), der tager en vektor med numeriske værdier og returnerer en vektor, der kun indeholder de værdier, der ligger strengt over gennemsnittet. Vi sammenligner begge resultater med den identiske () funktion.

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)

Produktion:

## [1] TRUE

tapply () funktion

tapply () beregner et mål (middel, median, min, max osv.) eller en funktion for hver faktorvariabel i en vektor. Det er en meget nyttig funktion, der giver dig mulighed for at oprette et undersæt af en vektor og derefter anvende nogle funktioner på hvert af delmængderne.

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 af en dataforskers eller forskeres job er at beregne oversigter over variabler. For eksempel måle gennemsnittet eller gruppedata baseret på en egenskab. De fleste af dataene er grupperet efter ID, by, lande osv. Sammenfatning over gruppe afslører mere interessante mønstre.

Lad os bruge iris-datasættet for at forstå, hvordan det fungerer. Dette datasæt er meget berømt i maskinindlæringens verden. Formålet med dette datasæt er at forudsige klassen for hver af de tre blomsterarter: Sepal, Versicolor, Virginica. Datasættet indsamler oplysninger for hver art om deres længde og bredde.

Som et tidligere arbejde kan vi beregne medianen af ​​længden for hver art. tapply () er en hurtig måde at udføre denne beregning på.

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

Produktion:

## setosa versicolor virginica## 3.4 2.8 3.0