Apply (), lapply (), sapply (), tapply () Funkció R-ben példákkal

Tartalomjegyzék:

Anonim

A bemutató célja az Apply () függvénygyűjtemény bemutatása. Az Apply () függvény az összes gyűjtemény legalapvetőbb. Meg fogunk tanulni sapply (), lapply () és tapply () nyelveket is. Az alkalmazás gyűjtemény a hurok helyettesítőjeként tekinthető meg.

Az Apply () gyűjtemény egy alapvető csomaggal van együtt, ha az R-t Anacondával telepíti. Az Apply () függvény számos funkcióval táplálható, hogy redundáns alkalmazást hajtson végre egy objektum gyűjteményen (adatkeret, lista, vektor stb.). Az Apply () célja elsősorban a hurok konstrukciók kifejezett használatának elkerülése. Használhatók bemeneti listához, mátrixhoz vagy tömbhöz, és alkalmazhatnak egy függvényt. Bármely függvény átadható az alkalmazásnak ().

Ebben az oktatóanyagban megtanulja

  • Apply () függvény
  • lapply () függvény
  • sapply () függvény
  • Szelet vektor
  • tapply () függvény

Apply () függvény

Az Apply () adatbázist vagy mátrixot vesz bemenetként, és kimenetet ad vektorban, listában vagy tömbben. Apply () A függvényt elsősorban a hurok konstrukciók kifejezett használatának elkerülésére használják. Ez az összes gyűjtemény közül a legalapvetőbb, amelyet egy mátrix fölött lehet használni.

Ennek a függvénynek 3 argumentuma van:

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>

A legegyszerűbb példa az összes oszlop mátrixának összegzése. Az alkalmazandó kód (m1, 2, összeg) az összeg függvényt alkalmazza az 5x6 mátrixra, és az adatkészletben elérhető minden oszlop összegét visszaadja.

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

Kimenet:

Legjobb gyakorlat: Tárolja az értékeket, mielőtt kinyomtatja őket a konzolra.

lapply () függvény

A lapply () függvény hasznos a listaobjektumok műveleteinek végrehajtásához, és az eredeti halmaz azonos hosszúságú listaobjektumát adja vissza. A lappy () egy olyan hosszú listát ad vissza, mint az input listaobjektum, amelynek minden eleme a FUN alkalmazásának eredménye a lista megfelelő elemére. A lapply () listát, vektort vagy adatkeretet vesz bemenetként, és a kimenetet adja a listában.

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

l in lapply () a listát jelenti. A lapply () és az Apply () közötti különbség a kimeneti visszatérés között rejlik. A lapply () kimenete egy lista. A lapply () használható más objektumokhoz, például adatkeretekhez és listákhoz.

A lapply () függvényhez nincs szükség MARGIN-ra.

Nagyon egyszerű példa lehet egy mátrix karakterláncának kisbetűvé változtatása tolower funkcióval. Felépítünk egy mátrixot a híres filmek nevével. A név nagybetűs.

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

Kimenet:

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

Az unlist () segítségével átalakíthatjuk a listát vektorgá.

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

Kimenet:

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

sapply () függvény

A sapply () függvény bemenetként listát, vektort vagy adatkeretet vesz fel, és kimenetet ad vektorban vagy mátrixban. Hasznos a listaobjektumokkal végzett műveletekhez, és az eredeti halmaz azonos hosszúságú listaobjektumát adja vissza. A sapply () függvény ugyanazt a munkát végzi, mint a lapply () függvény, de egy vektort ad vissza.

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

Az autók adatkészletéből mérhetjük az autók minimális sebességét és féktávolságait.

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

Kimenet:

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

Kimenet:

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

Kimenet:

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

Kimenet:

## speed dist## 25 120

Használhatunk egy felhasználói beépített függvényt a lapply () vagy a sapply () fájlokba. Hozunk létre egy avg nevű függvényt a vektor minimumának és maximumának átlagának kiszámításához.

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

Kimenet

## speed dist## 14.5 61.0

A sapply () függvény hatékonyabb, mint a visszaadott kimenetben a lapply (), mert a sapply () értékei közvetlenül egy vektorba kerülnek. A következő példában látni fogjuk, hogy ez nem mindig így van.

Az alkalmazás (), sapply () és `lapply () közötti különbséget a következő táblázatban foglalhatjuk össze:

Funkció

Érvek

Célkitűzés

Bemenet

Kimenet

alkalmaz

alkalmazni (x, MARGIN, FUN)

Alkalmazzon függvényt a sorokra vagy oszlopokra, vagy mindkettőre

Adatkeret vagy mátrix

vektor, lista, tömb

lapply

boldogan (X, FUN)

Alkalmazzon függvényt a bemenet összes elemére

Lista, vektor vagy adatkeret

lista

sapply

pörgős (X FUN)

Alkalmazzon függvényt a bemenet összes elemére

Lista, vektor vagy adatkeret

vektor vagy mátrix

Szelet vektor

Az adatkeret szeleteléséhez használhatjuk a lapply () vagy a sapply () felcserélhető elemeket. Létrehozunk egy függvényt a lenti_átlag () alatt, amely felvesz egy numerikus értékű vektort, és visszaad egy olyan vektort, amely csak azokat az értékeket tartalmazza, amelyek szigorúan meghaladják az átlagot. Mindkét eredményt összehasonlítjuk az azonos () függvénnyel.

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)

Kimenet:

## [1] TRUE

tapply () függvény

A tapply () kiszámít egy mértéket (átlag, medián, min, max, stb ...) vagy egy függvényt egy vektor minden egyes tényezőváltozójához. Ez egy nagyon hasznos függvény, amely lehetővé teszi egy vektor részhalmazának létrehozását, majd egyes funkciók alkalmazását az egyes részhalmazokra.

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

Az adattudós vagy kutatók feladata a változók összefoglalóinak kiszámítása. Például mérje meg az átlagot vagy a csoport adatait egy jellemző alapján. Az adatok többségét azonosító, város, ország stb. Szerint csoportosítják. A csoport összefoglalása érdekesebb mintákat tár fel.

A működésének megértéséhez használjuk az írisz adatkészletet. Ez az adatkészlet nagyon híres a gépi tanulás világában. Ennek az adatkészletnek az a célja, hogy megjósolja a három virágfaj osztályát: Sepal, Versicolor, Virginica. Az adatkészlet információkat gyűjt minden fajról a hosszúságukról és a szélességükről.

Korábbi munkaként kiszámíthatjuk az egyes fajok hosszának mediánját. A tapply () gyors módja ennek a számításnak a végrehajtására.

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

Kimenet:

## setosa versicolor virginica## 3.4 2.8 3.0