Taikyti (), lapply (), sapply (), tapply () Funkcija R su pavyzdžiais

Šia pamoka siekiama pristatyti „Apply“) funkcijų kolekciją. Taikymo () funkcija yra pati pagrindinė kolekcija. Taip pat išmoksime sapply (), lapply () ir tapply (). Taikomąją kolekciją galima vertinti kaip pakaitalą.

„Install“ () kolekcija yra sujungta su „ r essential“ paketu, jei įdiegiate „R“ su „Anaconda“. Funkcija „Apply“) gali būti tiekiama su daugybe funkcijų, kad būtų atlikta nereikalinga objekto (duomenų rėmelio, sąrašo, vektoriaus ir kt.) Kolekcija. „Apply“) tikslas pirmiausia yra vengti aiškaus kilpų konstrukcijų naudojimo. Jie gali būti naudojami įvesties sąrašui, matricai ar masyvui ir pritaikyti funkciją. Bet kuri funkcija gali būti perkelta į taikyti ().

Šioje pamokoje sužinosite

  • taikyti () funkciją
  • funkcija lapply ()
  • funkcija sapply ()
  • Skiltelių vektorius
  • „taply“ () funkcija

taikyti () funkciją

Taikyti () ima duomenų rėmelį arba matricą kaip įvestį ir pateikia išvestį vektoriuje, sąraše arba masyve. taikyti () Funkcija pirmiausia naudojama norint išvengti aiškaus kilpų konstrukcijų naudojimo. Tai pats elementariausias rinkinys, kurį galima naudoti matricoje.

Šiai funkcijai reikalingi 3 argumentai:

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>

Paprasčiausias pavyzdys yra visų stulpelių matricos suma. Taikomas kodas (m1, 2, suma) pritaikys sumos funkciją matricai 5x6 ir grąžins kiekvieno duomenų rinkinyje pasiekiamo stulpelio sumą.

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

Išvestis:

Geriausia praktika: išsaugokite vertes prieš spausdindami jas į konsolę.

funkcija lapply ()

Funkcija „lapply ()“ yra naudinga atliekant sąrašo objektų operacijas ir pateikia to paties ilgio pradinio rinkinio sąrašo objektą. lappy () grąžina panašaus ilgio sąrašą kaip įvesties sąrašo objektas, kurio kiekvienas elementas yra rezultatas taikant FUN atitinkamam sąrašo elementui. „lapply“) ima sąrašą, vektorių ar duomenų rėmelį ir pateikia išvestį sąraše.

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

l in lapply () reiškia sąrašą. Skirtumas tarp „lapply“ () ir „sovelletaan“ () yra tarp išvesties grąžos. „Lapply“ () išvestis yra sąrašas. „lapply“ () gali būti naudojama kitiems objektams, pvz., duomenų rėmams ir sąrašams.

funkcijai lapply () nereikia KORPUSO.

Labai lengvas pavyzdys gali būti pakeisti matricos eilutės vertę į mažąsias raides su tolower funkcija. Sukuriame matricą su garsių filmų pavadinimais. Pavadinimas yra didžiųjų raidžių formatas.

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

Išvestis:

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

Norėdami konvertuoti sąrašą į vektorių, galime naudoti „unlist“ ().

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

Išvestis:

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

funkcija sapply ()

Funkcija sapply () ima sąrašą, vektorių arba duomenų rėmelį ir pateikia išvestį vektoriuje arba matricoje. Tai naudinga atliekant veiksmus su sąrašo objektais ir pateikia to paties ilgio pradinio rinkinio sąrašo objektą. funkcija sapply () atlieka tą patį darbą kaip funkcija lapply (), tačiau pateikia vektorių.

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

Iš automobilių duomenų rinkinio galime išmatuoti mažiausią automobilių greitį ir stabdymo atstumus.

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

Išvestis:

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

Išvestis:

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

Išvestis:

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

Išvestis:

## speed dist## 25 120

Mes galime naudoti vartotojo integruotą funkciją „lapply“ () arba „sapply“ (). Sukuriame funkciją, pavadintą avg, kad apskaičiuotume vektoriaus mažiausio ir didžiausio vidurkį.

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

Rezultatas

## speed dist## 14.5 61.0

funkcija sapply () yra efektyvesnė už grąžintą išvestį, nes sapply () saugo reikšmes tiesiogiai į vektorių. Kitame pavyzdyje pamatysime, kad tai ne visada.

Šioje lentelėje galime apibendrinti skirtumą tarp Apply (), sapply () ir `lapply ():

Funkcija

Argumentai

Tikslas

Įvestis

Rezultatas

kreiptis

taikyti (x, MARGIN, FUN)

Taikykite funkciją eilutėms ar stulpeliams arba abiem

Duomenų rėmas arba matrica

vektorius, sąrašas, masyvas

lapply

lapply (X, FUN)

Taikykite funkciją visiems įvesties elementams

Sąrašas, vektorius arba duomenų rėmas

sąrašą

sapply

linksmas (X FUN)

Taikykite funkciją visiems įvesties elementams

Sąrašas, vektorius arba duomenų rėmas

vektorius arba matrica

Skiltelių vektorius

Duomenų rėmeliui supjaustyti galime naudoti „lapply“ () arba „sapply“ (), kurie gali būti keičiami. Sukuriame funkciją, žemiau vidurkio (), kuri ima skaitinių reikšmių vektorių ir pateikia vektorių, kuriame yra tik griežtai didesnės už vidurkį vertės. Abu rezultatus lyginame su identiška () funkcija.

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)

Išvestis:

## [1] TRUE

„taply“ () funkcija

„tapply“ () apskaičiuoja kiekvieno vektoriaus veiksnio kintamojo matą (vidurkį, medianą, min, max ir tt ...) arba funkciją. Tai labai naudinga funkcija, leidžianti sukurti vektoriaus pogrupį ir tada pritaikyti kai kurias funkcijas kiekvienam pogrupiui.

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

Duomenų mokslininko ar tyrėjų darbo dalis yra kintamųjų santraukų apskaičiavimas. Pavyzdžiui, išmatuokite vidutinius arba grupės duomenis pagal charakteristiką. Dauguma duomenų yra sugrupuoti pagal asmens tapatybės dokumentą, miestą, šalis ir pan. Apibendrinant grupę, paaiškėja įdomesni modeliai.

Norėdami suprasti, kaip tai veikia, naudokime rainelės duomenų rinkinį. Šis duomenų rinkinys yra labai žinomas mašininio mokymosi pasaulyje. Šio duomenų rinkinio tikslas yra numatyti kiekvienos iš trijų gėlių rūšių klasę: Sepal, Versicolor, Virginica. Duomenų rinkinys renka informaciją apie kiekvieną rūšį apie jų ilgį ir plotį.

Kaip išankstinį darbą galime apskaičiuoti kiekvienos rūšies ilgio mediana. „tapply“ () yra greitas būdas atlikti šį skaičiavimą.

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

Išvestis:

## setosa versicolor virginica## 3.4 2.8 3.0

Įdomios straipsniai...