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