Üks laialdaselt kasutatavaid programmeerimiskeeli statistika arvutamiseks ja statistikatarkvara arendamiseks R. The R programmeerimiskeel on litsentsitud GNU üldise avaliku litsentsi alusel. Sellel on kõik programmid liideste haldamiseks, nn käsurea liides . Lisaks on programmeerimiskeel R integreeritud teiste graafiliste kasutajaliidestega, näiteks RStudio , Jupyter märkmik. Sellest artiklist saate teada mõned R-i olulised funktsioonid, nagu apply(), tapply(), lapply() ja sapply().
Sisukord
- Mis on R programmeerimiskeel?
- Andmestruktuurid kirjas R
- Miks kasutada perefunktsiooni R apply()?
- Rakenduse apply() Family Function omadused
- Funktsiooni apply() eelised traditsioonilise tsükli ees
- apply() Funktsioon
- lappaly () Funktsioon
- rakendus () funktsioon
- Funktsioonide apply(), sapply() ja lapply() erinevus
- tapply() funktsioon
- mapply() funktsioon
- Järeldus
- Soovitatavad artiklid
Mis on R programmeerimiskeel?
1993. aastal ilmus programmeerimiskeel nimega R. Ross Ihaka ja Robert Gentleman kujundasid programmeerimiskeele R. Programmeerimiskeel R on programmeerimiskeele S kaasaegne versioon. The S programmeerimiskeel töötati välja ka statistilise andmetöötluse jaoks. Nimi R on antud programmeerimiskeelele Rossi ja Roberti nimede põhjal.
Kuna programmeerimiskeel R on spetsiaalselt loodud statistika ja graafika jaoks, sisaldab see erinevaid statistilisi ja graafilisi meetodeid. Need meetodid hõlmavad klassifitseerimist, rühmitamist, lineaarset modelleerimist, mittelineaarset modelleerimist ja paljusid muid tehnikaid. Programmeerimiskeele R oluline eelis on see, et see on olemas objektorienteeritud võimalused kui teised statistilised programmeerimiskeeled.
Andke meile teada, kuidas programm R programmeerimiskeeles käivitatakse. Sellel on R-käsuviip, mis käivitab mis tahes koodi või koodirida. Oletame, et kasutaja peab käsureal R arvutama 2+2. See kuvab tulemuse 4, nagu allpool näidatud:
|_+_|Siin käsitletakse iga üksikut elementi ühe vektorina. Seetõttu hõlmab 2+2 kahte erinevat vektorit, millest igaühe väärtus on 2. Väljundit vaadates kuvatakse see enne tegelikku väljundit [1], 4. [1] tähistab elementide arvu vektoris.
Andmestruktuurid kirjas R
Programmeerimiskeel R toetab ka maatriksite kasutamist. See toetab andmestruktuure, nagu massiivid , maatriksid, vektorid, nimekirjad ja andmeraamid.

- Perekonna apply() igas funktsioonis on kaks argumenti. Esimene argument, mis edastatakse funktsioonile apply(), on objekt ja teine on funktsioon. R lubab funktsiooni käsitleda argumendina, edastades selle mis tahes rakenduse() funktsioonis.
- Perekonna funktsioonide apply () kasutamise üks olulisi ja peamisi omadusi on see, et koodil pole kõrvalmõjusid.
- Funktsioonid apply() kasutavad punktiargumente argumentide edastamiseks mis tahes funktsioonile.
- Iga kord, kui kasutame mõnda funktsiooni apply(), tagastab see pärast koodi käivitamist mõne väljundi. Kasutage rakendusi () ainult siis, kui need on nõutavad. Näiteks kui soovite lihtsalt tulemusi käsureal, kasutades funktsiooni print(), siis ärge kasutage rakendusi ().
- Funktsioonis apply() on sisendiks andmeraam ja maatriks. Teisest küljest võtab funktsioon lapply() sisendiks andmeraami, loendi ja vektori.
- Funktsiooni apply () väljund on esitatud vektorina, samas kui funktsiooni lapply () väljund on loendi kujul.
- Funktsioon lapply() ei sisalda argumenti MARGIN.
- Funktsioon apply() võtab sisendiks andmeraami ja maatriksi, funktsioon sapply() aga andmeraami, vektori ja loendi sisendiks. Funktsioon lapply() võtab samuti sama sisendi kui funktsioon sapply().
- Järgmisena esitab funktsioon apply() oma tulemuse vektorina. Teisest küljest loob funktsioon saply() väljundina vektori ja loendi. Funktsioonil lapply() on väljund ainult loendina.
- Sarnaselt funktsioonile lapply() ei ole ka funktsiooni sapply() argumentides MARGIN.
Programmeerimiskeele R massiivi andmestruktuur sisaldab sarnast tüüpi andmeid. See salvestab andmeid rohkem kui kahemõõtmelisel kujul. Näiteks kui defineerime massiivi (3,5,4), loob see 4 maatriksit, kus igal maatriksil on 3 rida ja 5 veergu. Massiivi saate luua programmeerimiskeeles R kasutades array() meetodit.
Funktsioon array() loob massiivi, mida peetakse vektoriks. Funktsiooni array() süntaks R-is on toodud allpool:
|_+_|Siin tähendab nrow ridade arvu, ncol veergude arvu ja nmat maatriksite arvu.
Vaatame R-is massiivi loomise näidet. Allolev kood loob 3*3 massiivi.
|_+_|Väljund:
|_+_|[ , üks] | [ , kaks] | [ , 3] | |
[ , üks] | 3 | üks | kaks |
[ , kaks] | 6 | 4 | 9 |
[ , 3] | 7 | 5 | 8 |
[ , üks] | [ , kaks] | [ , 3] | |
[ , üks] | 3 | üks | kaks |
[ , kaks] | 6 | 4 | 9 |
[ , 3] | 7 | 5 | 8 |
Programmeerimiskeeles R kujutab maatriksandmestruktuur andmeid kahemõõtmelise ristkülikukujulise kujuga. Kõik maatriksis olevad elemendid on sama tüüpi andmetüüpe. Nagu massiivi loomiseks kasutatakse meetodit array(), kasutatakse maatriksi loomiseks funktsiooni maatriks().
Maatriksit kasutatakse tavaliselt matemaatilisteks arvutusteks. Kuid see võib võtta ka märgiväärtusi ja loogilisi väärtusi. Kuid tavaliselt ei kasutata neid väärtusi maatriksites laialdaselt. Funktsiooni maatriks() süntaks R-is on esitatud järgmiselt:
|_+_|Siin käsitletakse andmeid kui vektorit, mis koosneb maatriksielementidest. Teine argument, nrow, viitab ridade arvule ja ncol tähendab veergude arvu. Viimane argument, dimnames, tähistab ridade ja veergude nimesid. Ainulaadne argument maatriksis() on kõrvalrida, mis on loogiline väärtus. Kui kõrvalrida on TRUE, esitatakse kõik vektorelemendid reavormingus.
Allpool on näide, mis aitab teid maatriksite rakendamisel.
|_+_|Väljund:
[ , üks] | [ , kaks] | [ , 3] | |
[ , üks] | 4 | 5 | 6 |
[ , kaks] | 7 | 8 | 9 |
[ , 3] | 10 | üksteist | 12 |
[ , üks] | [ , kaks] | [ , 3] | |
[ , üks] | 4 | 7 | 10 |
[ , kaks] | 5 | 8 | üksteist |
[ , 3] | 6 | 9 | 12 |
veerg1 | veerg2 | veerg3 | |
rida1 | 4 | 5 | 6 |
rida2 | 7 | 8 | 9 |
rida3 | 10 | üksteist | 12 |
Vektor on programmeerimiskeeles R väga põhiline andmestruktuur. See toetab kuut erinevat andmetüübi väärtust, nagu täisarv, kahekordne, kompleksne, märgiline, töötlemata ja loogiline. Vektorandmete struktuuris saate kaasata ühe elemendi mitmest elemendist. Vaatame näiteid nii üksikute kui ka mitme vektori elemendi kohta.
Vaata ka 23 parimat tasuta failijagamise veebisaitiÜhe elemendiga:
|_+_|Mitu elementi:
|_+_|Loendi andmestruktuur võib koos hoida mis tahes andmetüüpe, nagu täisarvud, stringid, vektorid jne. Loendis võib olla loend. Loendi andmestruktuuri üks imeline omadus on see, et sellel võib olla ka maatriks või mis tahes funktsioon. Koostame loendi R programmeerimiskeeles funktsiooni list() abil.
Järgmine on loendi süntaks R-is:
|_+_|Siin on x loendi objekt ja väärtus tähistab objekti x elemente loendis. Vaatame R-i loendi näidet.
|_+_|Väljund:
|_+_|Andmeraamid on programmeerimiskeele R veel üks andmestruktuur. See on esitatud tabelivormingus. Teisisõnu, seda saab käsitleda kahemõõtmeliste maatriksitena, kus veeru väärtused võivad olla mis tahes tüüpi. Andmeraami struktuuri loomiseks kasutatakse funktsiooni data.frame().
Kujutame ühte näidet, et mõista, kuidas andmeraam R-s luuakse.
|_+_|Väljund:
|_+_|Miks kasutada perefunktsiooni R apply()?
Programmeerimisel kasutame a silmuse jaoks iteratsiooni jaoks. Silmuste kasutamisel on siiski mõned negatiivsed tagajärjed. Me kasutame objekte for-tsüklis. Need objektid jäävad tööruumi for-tsükli sisse. Mõned inimesed võivad neid objekte nõuda, samas kui mõned võivad neid käsitleda soovimatutena. Vaatame näite abil, kuidas for-tsüklil on kõrvalmõjud.
|_+_|See on kood. Mis on oodatav väljund? Tulemuseks võib olla string 'Säravad varjus...'. Pärast selle koodi käivitamist on tegelik tulemus 5, nagu 5 iteratsiooni tsükli puhul.
Väljund:
|_+_|Iga iteratsiooni puhul võtab muutuja 'laul' väärtuse vektorist 'laul'.
Programmeerimiskeel R tutvustab veel üht tugevat silmussüsteemi, et vältida for-tsüklist tingitud probleeme. Uus silmussüsteem on rakendusperekond. Rakendusperekond on funktsioonide kogum, millel pole kõrvalmõjusid, nagu for-silmus. Rakendusperekonnas on seitse funktsiooni.
Rakenduse apply() Family Function omadused
Siin on mõned perefunktsioonide apply() olulised omadused. Enne rakendus() perefunktsiooni üksikasjadesse sukeldumist käsitleme mõningaid põhifunktsioone.
Funktsiooni apply() eelised traditsioonilise tsükli ees
Mis tahes kood või koodiplokk käivitatakse funktsiooni apply() abil kiiremini kui traditsioonilised tsüklid. Programmeerimiskeeles R on saadaval mitu sisseehitatud paketti. Üks R-i pakettidest on gamclass, mis sisaldab FARS-i (Fatality Analysis Recording System) andmestikku. FARS-i andmestikul on 17 erinevat tunnust, millel on 15118 vaatlust.
Toome näite, et vaadata koodi käitamiseks kuluvat aega, kasutades funktsiooni apply() ja traditsioonilist tsüklimeetodit. Mõtle, et peame leidma antud kaalude keskmise. Seega koostame koodi, kasutades for-tsüklit ja funktsiooni apply().
|_+_|For silmuse kasutamine:
Funktsiooni apply () kasutamine:
|_+_|Funktsiooni apply() kasutamine nõuab vähem koodiridu kui for-silmus. Peame nägema aega, mis kulub antud kaalude keskmise arvutamiseks. Seetõttu kasutame ainulaadset R-i paketti nimega Profvis.
Provifsi paketi esmane eesmärk on pakkuda graafiliselt iga koodi käsuga kulutatud aega ja mälu. Seega võimaldab paketi Provifs kasutamine teada aega, mis kulub kaalu keskmise arvutamiseks, kasutades funktsiooni for loop ja apply ().
|_+_|For silmuse kasutamine:
Ülaltoodud koodi väljundis märkate, et kuvatakse for-tsükli jaoks vajalik aeg.
|_+_|Koodirea täitmiseks kulub 30 ms.
|_+_|Selle koodirea täitmiseks kulub 1600 ms. Seetõttu kulub kahe rea täitmiseks aega 1900 ms.
|_+_|Funktsiooni apply () kasutamine:
Ülaltoodud koodis on rida
|_+_|täitmiseks kulub vaid 20 ms.
Vaata ka 4 parandust, mille puhul me ei saanud Outlooki andmefaili luuaÜlaltoodud kahe koodikäituse põhjal järeldame, et funktsioon apply() on kasulik ja aegasäästlik kui traditsiooniline for-silmus. Samuti on lihtne kasutada funktsiooni apply(), kuna see nõuab vähem koodiridu. Tutvustame nüüd erinevaid rakendus() funktsioone ja nende rakendusi.
apply() Funktsioon
Oleme uurinud R programmeerimiskeele viit erinevat andmestruktuuri. Funktsioon apply() kasutab kahte andmestruktuuri viiest, andmeraami ja maatriksit. Teisisõnu kasutatakse andmeraami ja maatriksit funktsiooni apply() sisendina. Funktsiooni apply () väljundit väljendatakse vektoris.
Funktsioon apply() on kõigi teiste funktsioonide põhifunktsioon. See väldib selgesõnaliste tsüklikonstruktsioonide probleemi. Vaatame, milliseid argumente funktsioonis apply() kasutatakse. Allpool on süntaks:
|_+_|Arutleme üksikasjalikult iga funktsiooni apply () argumenti. Esimene parameeter X viitab maatriksile või massiivile. Järgmisena tähistab MARGIN kahte väärtust 1 ja 2, mis näitavad, millistel andmetel tuleks rakendust () kasutada.
MARGIN=1 puhul tuleks ridadel kasutada funktsiooni apply(), samas kui MARGIN=2 puhul tuleks rakendada funktsiooni apply() veergudele. Viimane parameeter FUN tähistab rakendatavat funktsiooni. Kui soovite kasutada ridadel ja veergudel funktsiooni apply(), peate defineerima MARGIN = c(1,2).
Programmeerimiskeeles R on mitu sisseehitatud funktsiooni, nagu summa, keskmine, mediaan, max ja min. Võite kasutada ka kasutaja määratud funktsioone. Nüüd näeme näidet, kus saab kasutada funktsiooni apply(). Võtke näide kahe maatriksi lisamisest kõikidele veergudele.
|_+_|Koodi ülemistel ridadel oleme kuvanud maatriksi p. Seega on väljund järgmine:
[ ,üks] | [ , kaks] | [ , 3] | [ , 4] | [ , 5] | [ .6] | |
[üks, ] | üks | 6 | üks | 6 | üks | 6 |
[kaks, ] | kaks | 7 | kaks | 7 | kaks | 7 |
[3, ] | 3 | 8 | 3 | 8 | 3 | 8 |
[4, ] | 4 | 9 | 4 | 9 | 4 | 9 |
[5, ] | 5 | 10 | 5 | 10 | 5 | 10 |
Tegime veergude summa ja väljund on järgmine:
Väljund:
|_+_|lappaly () Funktsioon
Perefunktsiooni apply() teine funktsioon on funktsioon lapply(). Funktsioonis lapply() kasutame sisendina loendit ja see loob väljundina loendi. Väljundloendi pikkus on sama, mis sisendloendi pikkus. Funktsiooni lapply() kontekstis viitab l loendile. Lisaks võtab funktsioon lapply() sisenditena ka andmeraami ja vektori ning loob väljundina loendi. Allpool on funktsiooni lapply() süntaks:
|_+_|Funktsioonil lapply() on kaks argumenti. Siin tähistab X objekti või vektorit ja FUN tähistab mis tahes funktsiooni, mida objektile rakendada.
Funktsioonide apply() ja lapply() erinevus:
Toome näite, et mõista, kuidas funktsioon lapply() töötab. Selles näites teisendame suurtähtede maatriksi stringi väiketähtedeks.
|_+_|Tulemus:
|_+_|Saate oma loendi teisendada vektoriks, kasutades funktsiooni unlist(). Andke meile teada, kuidas funktsioon unlist() töötab.
|_+_|Väljund:
|_+_|rakendus () funktsioon
Teine rakendus() perekonna funktsioon on funktsioon sapply(). Funktsioon saply() võtab sisendiks vektor- või andmeraami andmestruktuure ja loob väljundi vektori või maatriksi kujul. Lisaks võtab funktsioon sapply() loendi sisendiks ja genereerib väljundina sama pikkuse loendi. Funktsioonid lapply() ja apply() on sarnased, kuid ainus erinevus on see, et apply() loob vektori.
Allpool on funktsiooni sapply() süntaks:
|_+_|Funktsioon sapply() võtab kaks sisendparameetrit, X ja FUN. Parameeter X viitab vektorile või objektile ja FUN tähendab funktsiooni, mida kasutatakse koos X-ga.
Vaata ka Kuidas vaigistada suumiheli arvutis või mobiilseadmesFunktsioonide apply() ja sapply() erinevus:
Järgmine kood kujutab funktsiooni sapply() näidet. Allolev kood kasutab autode andmestikku ja arvutab autode väikseima kiiruse ja peatumisteekonna.
|_+_|Väljund: allolev väljund genereeritakse funktsiooni lapply() abil ja kuvab minimaalse kiiruse ja peatumisteekonna.
|_+_|Väljund: allolev tulemus saadakse funktsiooni sapply() abil, mis esindab väikseimat kiirust ja peatumisteekonda.
|_+_|Vaatame teistsugust näidet, mis näitab autode maksimaalset pidurdusteekonda ja kiirust.
|_+_|Väljund: siin saadakse tulemus funktsiooni lapply() abil, mis näitab maksimaalset kiirust ja vahemaad.
|_+_|Ülaltoodud rea väljund saadakse funktsiooni sapply() abil.
Väljund:
|_+_|Funktsioonide lapply() ja sapply() kasutamise üks olulisi eeliseid on see, et kasutajad saavad kasutada kasutaja määratud funktsioone. Nüüd saame teada, kuidas saab kasutaja määratud funktsiooni kasutada funktsioonides lapply() ja sapply().
Käesolevas näites defineerime avgr-funktsiooni, mis leiab vektori vähima ja maksimaalse keskmise.
|_+_|Väljund:
|_+_|Funktsioonide apply(), sapply() ja lapply() erinevus
Järgmises tabelis on esitatud üldised erinevused ülaltoodud kolme funktsiooni, apply(), lapply() ja sapply() vahel.
Funktsioon | Argumendid | Eesmärk | Sisend | Väljund |
rakenda () | Selleks on vaja kolme argumenti, nimelt X, MARGIN ja FUN. | Kasutame maatriksi ridade ja veergude puhul funktsiooni apply(). | Funktsioon apply() võtab sisendiks andmeraami või vektori. | See toodab väljundit loendi, massiivi või vektori kujul. |
lapply() | Funktsioon lapply() sisaldab kahte argumenti, X ja FUN. Sellel puudub MARGIN. | Seda kasutatakse loendi, vektori või andmeraami kõikide elementide jaoks. | See funktsioon hõlmab sisendandmete struktuure, nagu loend, vektor või andmeraam. | Funktsioon lapply() genereerib väljundina ainult loendi. |
rakendama () | Sellel funktsioonil on ka kaks argumenti, X ja FUN. Argumenti ARGIN ei kaasata. | Funktsiooni sapply() saate kasutada sisendi kõigi elementide jaoks. | Funktsioon saply() võtab sisendiks ka loendi, vektori või andmeraami. | See tähistab väljundit vektori või maatriksi kujul. |
tapply() funktsioon
Funktsiooni tapply() kasutatakse keskmise, mediaani, keskmise, max, min, summa jne arvutamiseks. Neid mõõte saab arvuti abil teha vektori iga faktorimuutuja jaoks. Funktsiooni tapply() üks huvitavaid osi on vektori mis tahes alamhulga osa võtmine ja sellega seotud meetmete võtmine. Allpool on funktsiooni tapply() süntaks:
|_+_|Siin on X objekt või vektor, INDEX on tegurit sisaldav loend ja FUN on X-le rakendatud funktsioon.
Funktsiooni tapply() mõistmiseks võtame näite iirise andmestikust. Andmeteadlased või uurijad rühmitavad andmeid konkreetsete tunnuste (nt ID, riigi või linna) alusel. Masinõppe domeen kasutab iirise andmestikku laialdaselt.
Oletame, et on kolm erinevat lilletüüpi, Sepal, Versicolor ja Virginica. Iirise andmestik ennustab lilleliike, kogudes teavet, nagu lillede pikkus ja laius. Mõelge, et peame arvutama iga liigi keskmise pikkuse. Pikkuse mediaani arvutamiseks saate kasutada funktsiooni tapply().
|_+_|Väljund:
|_+_|mapply() funktsioon
Funktsioon maply() perekonnas apply () on sarnane funktsiooniga apply(). Samuti genereerib see väljundina vektori. Mapply() funktsiooni nimetatakse ka mitme muutujaga funktsiooniks. Nimi on mitme muutujaga funktsioon, kuna seda saab kasutada mitme vektori ja loendi argumendiga. Teisisõnu kasutatakse funktsiooni mapply() mitme objekti paralleelseks iteratsiooniks. Funktsiooni FUN mapply() kasutatakse iga argumendi iga elemendiga.
Järgmine näide muudab teie arusaamise funktsioonist Mapply() selgemaks.
|_+_|Väljund:
|_+_|Siin on funktsioon argument, mis edastatakse funktsioonile mapply(). Funktsioon hõlmab kahte parameetrit a ja b. Teine argument on a=c(3,4) ja kolmas argument on b= c(2,3). Seega on a ja b kaks erinevat väärtust. Seega kutsutakse funktsiooni mapply() kaks korda. Funktsiooni mapply() esimene väljakutse on a=3 ja y=2. Kui x=4 ja y=3, antakse teine väljakutse funktsioonile mapply().
Järeldus
Programmeerimiskeel R on spetsiaalselt välja töötatud statistiliste ja graafiliste andmete esitamiseks. RStudio on spetsiaalne liides, mis on loodud R-keele jaoks. R-keeles on viis esmast andmestruktuuri. Need on vektor, loend, maatriksid, andmeraam ja massiiv. Oleme kõiki neid R-andmestruktuure koos nende süntaksitega üksikasjalikult näinud.
Perefunktsiooni apply() on kaasatud mitu funktsiooni. See artikkel sisaldab funktsioone apply(), lapply(), sapply(), tapply() ja mapply(). Iga funktsioon kuulub rakendus() perekonda ja seda on näitega selgelt selgitatud.
Hiljem vaatasime läbi funktsioonide apply() ja lapply() ning funktsioonide ad apply() ja sapply() erinevused. Funktsioonide apply(), lapply() ja sapply() üksikasjalik võrdlus on kujutatud tabelis, mis teeb iga lugeja lihtsamini mõistetavaks.