Yksi laajasti käytetyistä ohjelmointikielistä tilastolaskentaan ja tilastoohjelmistojen kehittämiseen R. The R-ohjelmointikieli on lisensoitu GNU General Public License -lisenssillä. Siinä on kaikki ohjelmat rajapintojen käsittelyyn, ns komentorivin käyttöliittymä . Lisäksi R-ohjelmointikieli on integroitu muihin graafisiin käyttöliittymiin, kuten RStudio , Jupyter muistikirja. Tässä artikkelissa opit joitain tärkeitä R:n toimintoja, kuten apply(), tapply(), lapply() ja sapply().
Sisällysluettelo
- Mikä on R-ohjelmointikieli?
- Tietorakenteet R:ssä
- Miksi käyttää R apply() Family Function -toimintoa?
- Apply() Family Functionin ominaisuudet
- Apply()-funktion edut perinteiseen silmukkaan verrattuna
- apply() -funktio
- lappaly () Toiminto
- apply () -funktio
- Ero apply(), sapply() ja lapply()-funktioiden välillä
- tapply()-funktio
- maply()-funktio
- Johtopäätös
- Suositellut artikkelit
Mikä on R-ohjelmointikieli?
Vuonna 1993 syntyi ohjelmointikieli nimeltä R. Ross Ihaka ja Robert Gentleman suunnittelivat R-ohjelmointikielen. R-ohjelmointikieli on S-ohjelmointikielen moderni versio. The S-ohjelmointikieli kehitettiin myös tilastolaskentaa varten. Nimi R on annettu ohjelmointikielelle Rossin ja Robertin nimien perusteella.
Koska R-ohjelmointikieli on suunniteltu erityisesti tilastoja ja grafiikkaa varten, se sisältää erilaisia tilastollisia ja graafisia menetelmiä. Nämä menetelmät sisältävät luokittelun, klusteroinnin, lineaarisen mallinnuksen, epälineaarisen mallinnuksen ja monet muut tekniikat. R-ohjelmointikielen merkittävä etu on siinä oliosuuntautunut ominaisuudet kuin muut tilastolliset ohjelmointikielet.
Kerro meille kuinka ohjelma suoritetaan R-ohjelmointikielellä. Siinä on R-komentokehote, joka suorittaa minkä tahansa koodin tai koodirivin. Oletetaan, että käyttäjän on laskettava 2+2 R-komentokehotteessa. Se näyttää tuloksen 4 alla olevan kuvan mukaisesti:
|_+_|Tässä jokaista elementtiä käsitellään yhtenä vektorina. Siksi 2+2 sisältää kaksi erilaista vektoria, joiden kummankin arvo on 2. Tulosta tarkasteltaessa se näyttää [1] ennen varsinaista tulostetta, 4. [1] edustaa vektorin elementtien lukumäärää.
Tietorakenteet R:ssä
R-ohjelmointikieli tukee myös matriisien käyttöä. Se tukee tietorakenteita, kuten taulukoita , matriisit, vektorit, luetteloita ja datakehykset.

- Jokaisessa apply()-perheen funktiossa on kaksi argumenttia. Ensimmäinen apply()-funktiolle välitettävä argumentti on objekti ja toinen on funktio. R sallii säännöksen käsitellä funktiota argumenttina samalla kun se välitetään missä tahansa apply()-funktiossa.
- Yksi App()-perhefunktioiden käytön tärkeimmistä ja ensisijaisista ominaisuuksista on, että koodissa ei ole sivuvaikutuksia.
- apply()-funktiot käyttävät pisteargumentteja argumenttien välittämiseen mille tahansa funktiolle.
- Aina kun käytämme mitä tahansa apply()-funktiota, se palauttaa jonkin tulosteen koodin suorittamisen jälkeen. Käytä apply()-funktioita vain, jos niitä vaaditaan. Jos esimerkiksi haluat vain tuloksia komentokehotteeseen käyttämällä print()-funktiota, älä käytä apply()-funktioita.
- Apply()-funktiossa syöte on datakehys ja matriisi. Toisaalta lapply()-funktio ottaa tietokehyksen, listan ja vektorin syötteenä.
- Apply()-funktion tulos esitetään vektorina, kun taas lapply()-funktion tulos on luettelomuodossa.
- Lapply()-funktio ei sisällä MARGIN-argumenttia.
- Apply()-funktio ottaa tietokehyksen ja matriisin syötteenä, kun taas sapply()-funktio ottaa tietokehyksen, vektorin ja listan syötteenä. Lapply()-funktio saa myös saman syötteen kuin sapply()-funktio.
- Seuraavaksi funktio apply() esittää tuloksensa vektorina. Toisaalta sapply()-funktio tuottaa vektorin ja listan lähtöinä. Lapply()-funktiolla on vain tulos luettelona.
- Lapply()-funktion tapaan sapply()-funktion argumenteissa ei ole MARGIN-merkkiä.
R-ohjelmointikielen taulukkotietorakenne sisältää samantyyppisiä tietoja. Se tallentaa tiedot useammassa kuin kaksiulotteisessa muodossa. Jos esimerkiksi määritämme taulukon (3,5,4), se luo 4 matriisia, joissa jokaisessa matriisissa on 3 riviä ja 5 saraketta. Voit luoda taulukon R-ohjelmointikielellä käyttämällä array()-menetelmää.
Ary()-funktio tuottaa taulukon, jota pidetään vektorina. Ary()-funktion syntaksi R:ssä on annettu alla:
|_+_|Tässä nrow tarkoittaa rivien määrää, ncol tarkoittaa sarakkeiden määrää ja nmat tarkoittaa matriisien määrää.
Katsotaanpa esimerkkiä taulukon luomisesta R:ssä. Alla oleva koodi luo 3*3 taulukon.
|_+_|Lähtö:
|_+_|[ , yksi] | [, kaksi] | [ , 3] | |
[ , yksi] | 3 | yksi | kaksi |
[, kaksi] | 6 | 4 | 9 |
[ , 3] | 7 | 5 | 8 |
[ , yksi] | [, kaksi] | [ , 3] | |
[ , yksi] | 3 | yksi | kaksi |
[, kaksi] | 6 | 4 | 9 |
[ , 3] | 7 | 5 | 8 |
R-ohjelmointikielessä matriisitietorakenne edustaa dataa kaksiulotteisen suorakaiteen muotoisena. Kaikki matriisissa olevat elementit ovat samaa tietotyyppiä. Kuten array()-menetelmää käytetään taulukon luomiseen, matriisi()-funktiota käytetään matriisin luomiseen.
Matriisia käytetään yleisesti matemaattisissa laskelmissa. Se voi kuitenkin ottaa myös merkkiarvoja sekä loogisia arvoja. Mutta näitä arvoja ei yleensä käytetä laajasti matriiseissa. R:n matriisi()-funktion syntaksi annetaan seuraavasti:
|_+_|Tässä dataa käsitellään vektorina, joka koostuu matriisielementeistä. Toinen argumentti, nrow, tarkoittaa rivien määrää ja ncol tarkoittaa sarakkeiden määrää. Viimeinen argumentti, dimnames, edustaa rivien ja sarakkeiden nimiä. Ainutlaatuinen argumentti matriisissa() on byrow, joka on looginen arvo. Jos sivurivi on TOSI, kaikki vektorielementit esitetään rivimuodossa.
Alla on esimerkki, joka auttaa sinua matriisien toteuttamisessa.
|_+_|Lähtö:
[ , yksi] | [, kaksi] | [ , 3] | |
[ , yksi] | 4 | 5 | 6 |
[, kaksi] | 7 | 8 | 9 |
[ , 3] | 10 | yksitoista | 12 |
[ , yksi] | [, kaksi] | [ , 3] | |
[ , yksi] | 4 | 7 | 10 |
[, kaksi] | 5 | 8 | yksitoista |
[ , 3] | 6 | 9 | 12 |
sarake1 | sarake2 | sarake3 | |
rivi1 | 4 | 5 | 6 |
rivi2 | 7 | 8 | 9 |
rivi 3 | 10 | yksitoista | 12 |
Vektori on erittäin perustavanlaatuinen tietorakenne R-ohjelmointikielessä. Se tukee kuutta erilaista tietotyyppiarvoa, kuten kokonaisluku, kaksoisluku, kompleksi, merkki, raaka ja looginen. Vektoritietorakenteessa voit sisällyttää yhden elementin useista elementeistä. Katsotaanpa esimerkkejä vektorin yksittäisistä ja useista elementeistä.
Katso myös 23 parasta ilmaista tiedostonjakosivustoaYksi elementti:
|_+_|Monielementit:
|_+_|Listatietorakenne voi pitää yhdessä minkä tahansa tietotyypin, kuten kokonaislukuja, merkkijonoja, vektoreita jne. Listan sisällä voi olla lista. Yksi listatietorakenteen ihmeellinen piirre on, että sen sisällä voi olla myös matriisi tai mikä tahansa toiminto. Luomme listan R-ohjelmointikielellä käyttämällä list()-funktiota.
Seuraava on luettelon syntaksi R:ssä:
|_+_|Tässä x on listan objekti ja arvo edustaa objektin x elementtejä luettelossa. Katsotaanpa esimerkkiä luettelosta R:ssä.
|_+_|Lähtö:
|_+_|Data Frames on toinen tietorakenne R-ohjelmointikielessä. Se esitetään taulukkomuodossa. Toisin sanoen sitä voidaan käsitellä kaksiulotteisina matriiseina, joissa sarakearvot voivat olla mitä tahansa tyyppiä. Data.frame()-nimistä funktiota käytetään tietokehysrakenteen luomiseen.
Kuvataan yksi esimerkki ymmärtääksemme kuinka tietokehys luodaan R:ssä.
|_+_|Lähtö:
|_+_|Miksi käyttää R apply() Family Function -toimintoa?
Ohjelmoinnissa käytämme a silmukalle iterointia varten. Silmukoiden käytöllä on kuitenkin joitain haitallisia vaikutuksia. Käytämme for-silmukassa olevia objekteja. Nämä objektit pysyvät for-silmukan sisällä työtilassa. Jotkut ihmiset saattavat tarvita näitä esineitä, kun taas jotkut saattavat pitää niitä ei-toivottuina. Katsotaanpa esimerkin avulla, kuinka for-silmukalla on sivuvaikutuksia.
|_+_|Tämä on koodi. Mikä on odotettu tulos? Saatat odottaa lopputulosta merkkijonona 'Shining in the varjo...'. Tämän koodin suorittamisen jälkeen todellinen tulos on 5, kuten silmukan suorittaessa 5 iteraatiota.
Lähtö:
|_+_|Jokaiselle iteraatiolle muuttuja 'song' saa arvon vektorista 'laulu'.
R-ohjelmointikieli esittelee toisen vahvan silmukkajärjestelmän for-silmukan aiheuttamien ongelmien välttämiseksi. Uusi silmukkajärjestelmä on soveltaa perhettä. Sovellusperhe on kokoelma funktioita, joilla ei ole sivuvaikutuksia, kuten for-silmukalla. Sovellusperheeseen on sisällytetty seitsemän toimintoa.
Apply() Family Functionin ominaisuudet
Tässä on joitain apply()-perhefunktioiden olennaisia ominaisuuksia. Ennen kuin sukeltaa apply()-perhetoiminnon yksityiskohtiin, harkitsemme joitain ensisijaisia ominaisuuksia.
Apply()-funktion edut perinteiseen silmukkaan verrattuna
Mikä tahansa koodi tai koodilohko suoritetaan nopeammin apply()-funktioilla kuin perinteiset silmukat. Useita sisäänrakennettuja paketteja on saatavana R-ohjelmointikielellä. Yksi R:n paketeista on gamclass, joka sisältää Fatality Analysis Recording System (FARS) -tietojoukon. FARS-tietojoukossa on 17 erilaista ominaisuutta, joissa on 15 118 havaintoa.
Otamme esimerkin tarkastellaksemme koodin suorittamiseen tarvittavaa aikaa käyttämällä apply()-funktiota ja perinteistä silmukkamenetelmää. Ajattele, että meidän on löydettävä annettujen painojen keskiarvo. Joten rakennamme koodin käyttämällä for-silmukkaa ja apply()-funktiota.
|_+_|For-silmukan käyttäminen:
Käytä apply()-funktiota:
|_+_|Apply()-funktion käyttäminen vaatii vähemmän koodirivejä kuin for-silmukka. Meidän on nähtävä aika, joka tarvitaan annettujen painojen keskiarvon laskemiseen. Siksi käytämme ainutlaatuista R:n pakettia nimeltä Profvis.
Provifs-paketin ensisijainen tavoite on tarjota graafinen esitys koodin kunkin käskyn kuluttamasta ajasta ja muistista. Näin ollen Provifs-paketin avulla voimme tietää ajan, joka tarvitaan painon keskiarvon laskemiseen for silmukan ja apply()-funktion avulla.
|_+_|For-silmukan käyttäminen:
Yllä olevan koodin ulostulossa huomaat, että for-silmukan vaatima aika näytetään.
|_+_|Koodirivin suorittaminen kestää 30 ms.
|_+_|Tämän koodirivin suorittaminen kestää 1600 ms. Siksi kahden rivin suorittamiseen kuluu 1900 ms aikaa.
|_+_|Käytä apply()-funktiota:
Yllä olevassa koodissa rivi
|_+_|kestää vain 20 ms suorittamiseen.
Katso myös 4 korjausta sille, ettemme voineet luoda Outlook-datatiedostoaYllä olevista kahdesta koodin suorituksesta päättelemme, että apply()-funktio on hyödyllinen ja aikaa säästävä kuin perinteinen for-silmukka. Apply()-funktion käyttäminen on myös yksinkertaista, koska se vaatii vähemmän koodirivejä. Kerro meille nyt erilaiset apply()-funktiot ja niiden toteutukset.
apply() -funktio
Olemme tutkineet viittä erilaista R-ohjelmointikielen tietorakennetta. Apply()-funktio käyttää kahta viidestä tietorakenteesta, tietokehystä ja matriisia. Toisin sanoen datakehystä ja matriisia käytetään syötteenä apply()-funktiolle. Apply()-funktion tulos ilmaistaan vektorina.
Apply()-funktio on kaikkien muiden funktioiden perusfunktio. Se välttää eksplisiittisten silmukkarakenteiden ongelman. Katsotaanpa, mitä argumentteja sovelletaan()-funktiossa käytetään. Alla on syntaksi:
|_+_|Tarkastellaan yksityiskohtaisesti kunkin apply()-funktion argumenttia. Ensimmäinen parametri X tarkoittaa matriisia tai taulukkoa. Seuraavaksi MARGIN edustaa kahta arvoa 1 ja 2, jotka osoittavat, mihin tietoihin sovelletaan()-toimintoa.
MARGIN=1:lle apply()-funktiota tulee käyttää riveillä, kun taas MARGIN=2:n tapauksessa apply()-funktiota tulee käyttää sarakkeissa. Viimeinen parametri, FUN, edustaa käytettävää toimintoa. Jos haluat käyttää apply()-funktiota riveillä ja sarakkeilla, sinun on määritettävä MARGIN = c(1,2).
R-ohjelmointikielessä on useita sisäänrakennettuja toimintoja, kuten summa, keskiarvo, mediaani, maksimi ja min. Voit myös käyttää käyttäjän määrittämiä toimintoja. Näemme nyt esimerkin, jossa voidaan käyttää apply()-funktiota. Otetaan esimerkki kahden matriisin lisäämisestä kaikkiin sarakkeisiin.
|_+_|Ylemmille koodiriveille olemme näyttäneet matriisin p. Tästä syystä tulos on:
[ ,yksi] | [, kaksi] | [ , 3] | [ , 4] | [ , 5] | [ .6] | |
[yksi, ] | yksi | 6 | yksi | 6 | yksi | 6 |
[kaksi, ] | kaksi | 7 | kaksi | 7 | kaksi | 7 |
[3, ] | 3 | 8 | 3 | 8 | 3 | 8 |
[4, ] | 4 | 9 | 4 | 9 | 4 | 9 |
[5, ] | 5 | 10 | 5 | 10 | 5 | 10 |
Suoritimme sarakkeiden summan, ja tulos on seuraava:
Lähtö:
|_+_|lappaly () Toiminto
Toinen apply()-perhefunktion funktio on lapply()-funktio. Lapply()-funktiossa käytämme syötteenä listaa ja se tuottaa listan tulosteena. Tulostuslistan pituus on sama kuin syöttöluettelon pituus. Lapply()-funktion yhteydessä l tarkoittaa listaa. Lisäksi lapply()-funktio ottaa myös tietokehyksen ja vektorin syötteinä ja tuottaa listan ulostulona. Alla on lapply()-funktion syntaksi:
|_+_|Lapply()-funktiolla on kaksi argumenttia. Tässä X tarkoittaa objektia tai vektoria, ja FUN edustaa mitä tahansa objektiin käytettävää toimintoa.
Ero apply()- ja lapply()-funktioiden välillä:
Otamme esimerkin ymmärtääksemme, kuinka lapply()-funktio toimii. Tässä esimerkissä muunnetaan isojen kirjainten matriisin merkkijono pieniksi kirjaimiksi.
|_+_|Tulos:
|_+_|Voit muuntaa luettelosi vektoriksi unlist()-funktiolla. Kerro meille, kuinka unlist()-funktio toimii.
|_+_|Lähtö:
|_+_|apply () -funktio
Toinen apply()-perheen funktio on sapply()-funktio. Funktio sapply() ottaa vektori- tai datakehystietorakenteita syötteenä ja tuottaa tulosteen vektori- tai matriisimuodossa. Lisäksi sapply()-funktio ottaa listan syötteenä ja luo samanpituisen listan ulostulona. Lapply()- ja apply()-funktiot ovat samanlaisia, mutta ainoa ero on, että apply() tuottaa vektorin.
Alla on sapply()-funktion syntaksi:
|_+_|Sapply()-funktio ottaa kaksi syöttöparametria, X ja FUN. Parametri X tarkoittaa vektoria tai objektia, ja FUN tarkoittaa funktiota, jota käytetään X:n kanssa.
Katso myös Zoom-äänen mykistäminen PC:ssä tai mobiililaitteessaEro apply()- ja sapply()-funktioiden välillä:
Seuraava koodi esittää esimerkin sapply()-funktiosta. Alla oleva koodi käyttää autotietojoukkoa ja laskee autojen pienimmän nopeuden ja jarrutusmatkat.
|_+_|Tulos: Alla oleva tulos on luotu lapply()-funktiosta, ja se näyttää miniminopeuden ja pysäytysmatkan.
|_+_|Tulos: Alla oleva tulos tuotetaan sapply()-funktiosta, joka edustaa pienintä nopeutta ja pysähdysmatkoja.
|_+_|Katsotaanpa erilaista esimerkkiä, joka näyttää autojen suurimman jarrutusmatkan ja nopeuden.
|_+_|Tulos: Tässä tulos saadaan lapply()-funktiosta, joka näyttää maksiminopeuden ja -matkan.
|_+_|Yllä olevan rivin tulos saadaan käyttämällä sapply()-funktiota.
Lähtö:
|_+_|Yksi lapply()- ja sapply()-funktioiden käytön merkittävistä eduista on, että käyttäjät voivat käyttää käyttäjän määrittämiä toimintoja. Tiedämme nyt, kuinka käyttäjän määrittämää funktiota voidaan käyttää lapply()- ja sapply()-funktioissa.
Tässä esimerkissä määritetään avgr-funktio, joka löytää vektorin pienimmän ja suurimman keskiarvon.
|_+_|Lähtö:
|_+_|Ero apply(), sapply() ja lapply()-funktioiden välillä
Seuraava taulukko kuvaa yleiset erot edellä olevien kolmen funktion, apply(), lapply() ja sapply() välillä.
Toiminto | Argumentit | Tavoite | Syöte | Lähtö |
Käytä() | Se vaatii kolme argumenttia, nimittäin X, MARGIN ja FUN. | Käytämme apply()-funktiota matriisin riveillä ja sarakkeilla. | Apply()-funktio ottaa tietokehyksen tai vektorin syötteenä. | Se tuottaa tulosteen luettelon, taulukon tai vektorin muodossa. |
lapply() | Lapply()-funktio sisältää kaksi argumenttia, X ja FUN. Siinä ei ole MARGINIA. | Sitä käytetään kaikkiin luettelon, vektorin tai tietokehyksen elementteihin. | Tämä toiminto sisältää syötetietorakenteita, kuten luettelon, vektorin tai datakehyksen. | Lapply()-funktio luo tulosteenaan vain listan. |
soveltaa () | Tällä funktiolla on myös kaksi argumenttia, X ja FUN. ARGIN-argumenttia ei ole sisällytetty. | Voit käyttää sapply()-funktiota käyttääksesi kaikkia syötteen elementtejä. | Funktio sapply() ottaa myös listan, vektorin tai datakehyksen syötteenä. | Se edustaa tulosta vektori- tai matriisimuodossa. |
tapply()-funktio
Tapply()-funktiota käytetään laskemaan keskiarvo, mediaani, keskiarvo, max, min, summa jne. Voit tietokoneella nämä mittaukset vektorin jokaiselle tekijämuuttujalle. Yksi tapply()-funktion mielenkiintoisista osista on vektorin minkä tahansa alijoukon osan ottaminen ja mittojen suorittaminen sille. Alla on tapply()-funktion syntaksi:
|_+_|Tässä X on objekti tai vektori, INDEKSI on tekijän sisältävä luettelo ja FUN on X:ään sovellettava funktio.
Ymmärrämme tapply()-funktion ottamalla esimerkin iiristietojoukosta. Datatieteilijät tai tutkijat ryhmittelevät tietoja tiettyjen ominaisuuksien, kuten tunnuksen, maan tai kaupungin, perusteella. Koneoppimisalue käyttää iiristietojoukkoa laajasti.
Oletetaan, että on kolme erilaista kukkatyyppiä, Sepal, Versicolor ja Virginica. Iris-tietojoukko ennustaa kukkalajeja keräämällä tietoja, kuten kukkien pituuden ja leveyden. Ajattele, että meidän on laskettava jokaisen lajin mediaanipituus. Voit käyttää tapply()-funktiota laskeaksesi pituuden mediaanin.
|_+_|Lähtö:
|_+_|maply()-funktio
Apply()-funktio apply()-perheessä on samanlainen kuin sapply()-funktio. Se luo myös vektorin ulostulona. Mapply()-funktiota kutsutaan myös monimuuttujafunktioksi. Nimi on monimuuttujafunktio, koska sitä voidaan käyttää useiden vektori- ja listaargumenttien kanssa. Toisin sanoen mapply()-funktiota käytetään suorittamaan iteraatioita useille objekteille rinnakkain. FUN mapply() -funktiossa käytetään jokaisen argumentin jokaisen elementin kanssa.
Seuraava esimerkki selventää ymmärrystäsi mapply()-funktiosta.
|_+_|Lähtö:
|_+_|Tässä funktio on argumentti, joka välitetään mapply()-funktiolle. Funktiossa on kaksi parametria, a ja b. Toinen argumentti on a=c(3,4) ja kolmas argumentti on b= c(2,3). Siksi a:lla ja b:llä on kaksi eri arvoa. Joten mapply()-funktiota kutsutaan kaksi kertaa. Mapply()-funktion ensimmäinen kutsu on a=3 ja y=2. Kun x=4 ja y=3, toinen kutsu annetaan mapply()-funktiolle.
Johtopäätös
R-ohjelmointikieli on kehitetty erityisesti tilastollisen ja graafisen tiedon esittämiseen. RStudio on erityinen R-kielelle suunniteltu käyttöliittymä. R-kielissä on viisi ensisijaista tietorakennetta. Ne ovat vektori, luettelo, matriisit, tietokehys ja taulukko. Olemme nähneet jokaisen näistä R-datarakenteista yksityiskohtaisesti niiden syntaksien kanssa.
Useita toimintoja on sisällytetty apply()-perhefunktioon. Tämä artikkeli sisältää funktiot apply(), lapply(), sapply(), tapply() ja mapply(). Jokainen funktio kuuluu apply()-perheeseen ja selitetään selkeästi esimerkin avulla.
Myöhemmin kävimme läpi eron apply()- ja lapply()-funktioiden, ad apply()- ja sapply()-funktioiden välillä. Funktioiden apply(), lapply() ja sapply() yksityiskohtainen vertailu on kuvattu taulukossa, mikä helpottaa lukijan ymmärtämistä.