Sovelletaan (), lapply (), sapply (), tapply () Funktio R: ssä esimerkkien kanssa

Sisällysluettelo:

Anonim

Tämän opetusohjelman tarkoituksena on esitellä Apply () -funktiokokoelma. Apply () -funktio on kaikkein perustavin kokoelma. Opimme myös sapply (), lapply () ja tapply (). Sovelluskokoelmaa voidaan pitää silmukan korvikkeena.

Apply () -kokoelma sisältää r välttämättömän paketin, jos asennat R: n Anacondan kanssa. Apply () -toimintoa voidaan syöttää monilla toiminnoilla redundantin sovelluksen suorittamiseksi objektikokoelmalle (datakehys, luettelo, vektori jne.). Sovelluksen () tarkoituksena on ensisijaisesti välttää silmukkarakenteiden nimenomaista käyttöä. Niitä voidaan käyttää tuloluettelossa, matriisissa tai taulukossa ja soveltaa toimintoa. Mikä tahansa toiminto voidaan siirtää sovellettavaksi ().

Tässä opetusohjelmassa opit

  • Apply () -toiminto
  • lapply () -toiminto
  • sapply () -toiminto
  • Viipalevektori
  • tappava () -toiminto

Apply () -toiminto

Apply () ottaa datakehyksen tai matriisin tuloksi ja antaa ulostulon vektorina, luettelona tai matriisina. Apply () Funktiota käytetään ensisijaisesti silmukkarakenteiden nimenomaisen käytön välttämiseen. Se on alkeellisinta kaikista kokoelmista, joita voidaan käyttää matriisin päällä.

Tässä toiminnossa on 3 argumenttia:

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>

Yksinkertaisin esimerkki on laskea matriisi kaikkien sarakkeiden yli. Koodi soveltaa (m1, 2, summa) käyttää summatoimintoa matriisiin 5x6 ja palauttaa kunkin tietojoukossa olevan sarakkeen summan.

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

Tuotos:

Paras käytäntö: Tallenna arvot ennen tulostamista konsolille.

lapply () -toiminto

lapply () -toiminto on hyödyllinen operaatioiden suorittamiseksi luettelo-objekteille ja palauttaa saman kokoisen luettelo-objektin kuin alkuperäinen joukko. lappy () palauttaa luettelon, jonka pituus on samanlainen kuin syöteluetteloobjektin, jonka jokainen osa on seurausta FUN: n soveltamisesta vastaavaan luettelon elementtiin. lapply () ottaa luettelon, vektorin tai datakehyksen syötteeksi ja antaa tuotoksen luettelossa.

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

l in lapply () tarkoittaa luetteloa. Lapply (): n ja Apply (): n ero on lähtöpalautuksen välillä. Lapply () -lähtö on luettelo. lapply () -sovellusta voidaan käyttää muihin kohteisiin, kuten tietokehyksiin ja luetteloihin.

funktio lapply () ei tarvitse MARGIN.

Erittäin helppo esimerkki voi olla matriisin merkkijonon arvon muuttaminen pienikokoiseksi tolower-toiminnolla. Rakennamme matriisin, jossa on tunnettujen elokuvien nimi. Nimi on isoja kirjaimia.

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

Tuotos:

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

Voimme käyttää unlist (): tä muunnettaessa luettelo vektoriksi.

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

Tuotos:

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

sapply () -toiminto

sapply () -funktio ottaa luettelon, vektorin tai datakehyksen syötteeksi ja antaa ulostulon vektorissa tai matriisissa. Se on hyödyllinen luettelo-objekteille tehtävissä toiminnoissa ja palauttaa luettelo-objektin, joka on yhtä pitkä kuin alkuperäinen joukko. sapply () -funktio tekee saman työn kuin lapply () -funktio, mutta palauttaa vektorin.

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

Voimme mitata autojen vähimmäisnopeuden ja pysäytysmatkat autojen tietojoukosta.

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

Tuotos:

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

Tuotos:

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

Tuotos:

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

Tuotos:

## speed dist## 25 120

Voimme käyttää käyttäjän sisäänrakennettua toimintoa osiin lapply () tai sapply (). Luomme funktion nimeltä avg laskemaan vektorin minimin ja maksimin keskiarvon.

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

Tuotos

## speed dist## 14.5 61.0

sapply () -toiminto on tehokkaampi kuin lapply () palautetussa lähdössä, koska sapply () tallentaa arvot suoraan vektoriksi. Seuraavassa esimerkissä näemme, että näin ei ole aina.

Voimme esittää yhteenvedon sovelluksen (), sapply () ja `lapply () välisestä erosta seuraavassa taulukossa:

Toiminto

Väitteet

Tavoite

Tulo

Tuotos

Käytä

käytä (x, MARGIN, FUN)

Lisää funktio riveille tai sarakkeille tai molemmille

Datakehys tai matriisi

vektori, luettelo, taulukko

iloisesti

iloisesti (X, FUN)

Käytä toimintoa syötteen kaikkiin elementteihin

Luettelo, vektori tai datakehys

lista

sapply

onnellinen (X FUN)

Käytä toimintoa syötteen kaikkiin elementteihin

Luettelo, vektori tai datakehys

vektori tai matriisi

Viipalevektori

Voimme käyttää lapply () tai sapply () vaihdettavissa datakehyksen viipaloimiseksi. Luomme funktion alle_keskiarvo (), joka ottaa vektorin numeerisista arvoista ja palauttaa vektorin, joka sisältää vain ne arvot, jotka ovat tiukasti keskiarvon yläpuolella. Vertaamme molempia tuloksia identtiseen () funktioon.

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)

Tuotos:

## [1] TRUE

tappava () -toiminto

tapply () laskee vektorin jokaisen tekijämuuttujan ( keskiarvo, mediaani, min, max jne.) tai funktion. Se on erittäin hyödyllinen toiminto, jonka avulla voit luoda vektorin osajoukon ja soveltaa sitten joitain toimintoja kuhunkin osajoukkoon.

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

Osa datatieteilijän tai tutkijoiden tehtävistä on laskea muuttujien yhteenvedot. Mittaa esimerkiksi keskiarvo tai ryhmätiedot ominaisuuksien perusteella. Suurin osa tiedoista on ryhmitelty henkilötodistuksen, kaupungin, maiden ja niin edelleen. Yhteenveto ryhmästä paljastaa mielenkiintoisempia malleja.

Ymmärrämme miten se toimii, käytetään iiris-tietojoukkoa. Tämä tietojoukko on erittäin kuuluisa koneoppimisen maailmassa. Tämän tietojoukon tarkoituksena on ennustaa kunkin kolmen kukkalajin luokka: Sepal, Versicolor, Virginica. Aineisto kerää tietoja jokaisesta lajista niiden pituudesta ja leveydestä.

Aikaisempana työnä voimme laskea kunkin lajin pituuden mediaanin. tapply () on nopea tapa suorittaa tämä laskenta.

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

Tuotos:

## setosa versicolor virginica## 3.4 2.8 3.0