rep() în R: Decodificarea funcției de replicare
Publicat: 2020-06-15Înainte de a vorbi despre rep în R , trebuie să știm ce este iterația. Termenul de iterație înseamnă repetiție. Ca și în majoritatea celorlalte limbaje de programare, bucla tradițională sau iterația este un aspect de bază al R.
În timp ce buclele obișnuite sunt o abordare eficientă a gestionării datelor, ele sunt costisitoare din singurul motiv că iterația necesită memorie și consumă mult timp. O alternativă bună este utilizarea metodelor vectorizate care pot atinge aceleași obiective ca și iterația; funcția rep() este membru al unei astfel de funcții de buclă vectorizată.
Cuprins
Ce este funcția rep()?
În termeni simpli, rep în R sau funcția rep() reproduce valorile numerice sau textul sau valorile unui vector pentru un anumit număr de ori. Funcția rep() este un membru al familiei de funcții apply() a pachetului de bază R. Familia apply() conține funcții utilizate pentru a manipula date din matrice, matrice, cadre de date și liste în mod repetitiv.
Funcțiile apply() evită utilizarea constructelor bucle pentru a acționa asupra matricelor, matricelor sau listelor de intrare și aplică o funcție numită cu argumente opționale. Funcția apelată poate fi o funcție de agregare, o funcție de transformare sau funcții vectorizate, cum ar fi matrice, vectori, liste și matrice. Consultați cursurile noastre de știință a datelor pentru a afla mai multe despre funcții.
Citiți mai multe: Cadre de date în Python: Tutorial detaliat Python
Calcule vectorizate versus iterații
În loc să opereze pe elemente individuale ale unei secvențe, metodele vectorizate lucrează pe toate componentele vectorului simultan. Astfel, calculele vectorizate aduc întotdeauna rezultate mai rapide.
Pentru a ilustra viteza calculelor vectorizate, vom folosi un exemplu care determină timpul scurs al unei bucle for() pentru generarea unui vector mare. În exemplu, fiecare element este calculat secvenţial ca sumă cumulativă incrementală de la 1 la N (unde N = 10.000.000). Se face o comparație între iterația buclei for() și funcția vectorizată prin teste de viteză.

Sursă
Comparând rezultatele testelor de viteză, este clar că timpul scurs pentru calculul vectorizat (testul de viteză 2) este semnificativ mai rapid decât bucla for(). În timpul necesar pentru o trecere a buclei iterative, calculul vectorizat poate fi repetat de 278 de ori.
Funcția Repeat versus Replicate
Funcția Repeat sau bucla din R este folosită atunci când dorim să executăm același bloc de cod în mod repetat până când este îndeplinită o anumită condiție. Este foarte asemănător cu buclele for și while care execută în mod repetat un bloc de comandă până la pauză. Sintaxa de bază pentru a crea o buclă de repetare este:
repeta {
dacă(condiție) {
pauză
}
}
Următorul exemplu va clarifica utilizarea funcției Repeat:


În exemplul de mai sus, bucla repetă însumează valoarea până când ajunge la 6. Odată ce bucla a ajuns la 6, bucla se întrerupe prin tipărirea „se termină bucla repetă”.
Pe de altă parte, funcția de replicare sau rep în R este utilizată pentru replicarea valorilor. Sintaxa R de bază pentru utilizarea funcției rep() este:
- rep(valoare,număr_de_ori)
- rep(secvență,fiecare,număr_de_ori)
Iată câteva exemple pentru a înțelege funcția rep():
Exemplu: Utilizarea funcției rep() pentru a replica valori pentru un anumit număr de ori


În exemplul de mai sus, valoarea 2 se repetă de zece ori.
Exemplu: Utilizarea funcției rep() cu un atribut de lungime


În exemplul de mai sus, de la 1 la 4 sunt imprimate în secvență până când numărul de elemente ajunge la 20.
Exemplu: Utilizarea funcției rep() pentru a replica o listă

În exemplul de mai sus, lista de rating de la 1 la 5 a fost replicată de trei ori.
Sursă
Folosind funcția rep() pentru a extinde un vector
Funcția rep() este o modalitate flexibilă de a repeta un vector. Iată mai multe exemple:

În cazul în care trebuie să extindem un vector statistic de unități experimentale/observaționale într-un vector al unui cadru de date cu observații repetate ale unităților, fiecare argument este foarte util. Exemplu:

O altă caracteristică a rep() este că un vector se poate extinde la un panou dezechilibrat prin înlocuirea argumentului de lungime cu un vector care specifică de câte ori se va repeta fiecare element din vector. Exemplu:

Versiunile mai simple și mai rapide ale funcției rep includ rep_len() și rep.int(). Aceste versiuni mai noi vin fără unele dintre atributele rep() dar se dovedesc utile în cazurile în care viteza este primordială și aspecte suplimentare ale vectorului repetat sunt nedorite.

Sursă
Citiți: 6 idei interesante de proiecte R pentru începători
Concluzie
În acest articol, am discutat despre funcțiile Repeat și Replicate cu exemple adecvate. În timp ce iterațiile tradiționale sunt utile pentru execuția repetată a blocurilor de cod, repul în R este ideal pentru replicarea valorilor unui vector sau a unei liste. Eficientă și economisește timp, funcția rep() are replicarea vectorului simplificată!
Dacă sunteți curios să aflați despre R, știința datelor, consultați programul Executive PG în știința datelor de la IIIT-B și upGrad, care este creat pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice, mentorat cu experți din industrie , 1-la-1 cu mentori din industrie, peste 400 de ore de învățare și asistență profesională cu firme de top.
Cum pot crea un vector cu valori repetate în R?
Funcția rep() din R poate fi folosită pentru a repeta o serie de numere întregi. În R, există două tehnici de creare a unui vector cu valori repetate; prima metodă repetă fiecare element din vector, în timp ce a doua metodă repetă elementele de un anumit număr de ori. Vectorii sunt creați folosind funcția rep în fiecare dintre aceste abordări. De exemplu, rep(1:5, ori=5) dă un vector cu secvența de la 1 la 5 repetată de 5 ori.
Ce funcție este mai rapidă - Replicare sau For Loop?
În limbajul de programare R, funcția de buclă For este mai rapidă decât funcția de replicare. O buclă for este o tehnică de a bucla peste o listă de valori în diferite limbaje de programare prin rularea codului pentru fiecare valoare din listă. rep() este o funcție de buclă vectorizată al cărei unic scop este să ruleze fără a pierde memoria. Când trebuie să modificați o porțiune a unui cadru de date existent, o buclă For este de obicei cea mai bună opțiune.
Cum pot accelera codurile R?
Unele metode pentru accelerarea codurilor R sunt enumerate mai jos: -
1. Înainte de a pune structurile de date și variabilele de ieșire într-o buclă pentru calcule, asigurați-vă că au lungimea și tipul de date potrivite. În interiorul buclei, încercați să nu extindeți progresiv cantitatea de date.
2. Când este posibil, utilizați o matrice în loc de un cadru de date, deoarece cadrele de date pot crea probleme în multe situații. Ca rezultat, utilizați cadre de date numai atunci când este absolut esențial.
3. Când este posibil, utilizați operații vectoriale și matrice.
4. În R, nu modificați tipul sau dimensiunea unui obiect. Schimbarea tipului și dimensiunii unui obiect R determină realocarea spațiului de memorie, care este inadecvat în mod implicit.
