Tipuri de date în R cu Exemplu
⚡ Rezumat inteligent
Tipurile de date din R definesc modul în care valorile sunt stocate în memorie, iar operatorii decid ce poate face R cu ele. Vectorii, variabilele, operatorii aritmetici, relaționali, logici și de atribuire sunt tratați aici cu exemple rulabile.

Care sunt tipurile de date din R?
Următoarele sunt tipurile de date sau structurile de date în programarea R:
- Scalari
- Vectori (numerici, caracteri, logici)
- matricelor
- Cadre de date
- liste
Această listă combină două idei corelate, iar separarea lor face ca restul paginii să fie mai ușor de urmărit. tip de date descrie ce este o singură valoare — un număr, un fragment de text, un ADEVĂRAT sau un FALS. A structură de date descrie câte valori sunt ținute împreună și în ce formă. Scalarele, vectorii, matricile, cadrele de date și listele sunt structuri; valorile din interiorul lor aparțin în continuare unuia dintre tipurile de bază ale lui R.
| Structure | Dimensiuni | Sunt permise tipuri mixte? | Utilizare tipică |
|---|---|---|---|
| mărime scalară | Vector de lungime 1 | Nu | O singură măsurătoare sau steag |
| Vector | 1 | Nu | O coloană de citiri de un singur tip |
| Matrice | 2 | Nu | Grile numerice și algebră liniară |
| Cadrul de date | 2 | Da, un tip pe coloană | Seturi de date tabelare |
| Listă | 1, dar imbricabil | Da, orice per element | Rezultate model și containere mixte |
R nu are un tip scalar separat: un scalar este pur și simplu un vector de lungime unu, motiv pentru care se scrie atât de mult cod R pentru vectori întregi simultan.
Tipuri de date de bază în R
Fiecare valoare din R aparține unuia dintr-un mic set de tipuri (atomice) de bază:
- 4.5 este o valoare zecimală numită numeric.
- 4 pare un număr întreg, dar R îl stochează totuși ca un dublu. Scrieți 4L când este necesar un număr întreg adevărat.
- ADEVĂRAT sau FALS este o valoare booleană, numită logică în R.
- Valoarea din interiorul caracterelor „ ” sau „ ' este text (un șir de caractere). Aceste valori se numesc caractere.
Alte două tipuri completează setul. Valorile complexe, cum ar fi 3+2i, conțin o parte reală și una imaginară, iar valorile brute conțin octeți. Ambele apar rar în analiza zilnică, dar sunt listate în baza R. documentația typeof() alături de cele patru tipuri comune.
| Tip | Valoare exemplu | class() returnează | typeof() returnează |
|---|---|---|---|
| Logic | TRUE | logic | logic |
| Întreg | 4L | întreg | întreg |
| Double (numeric) | 4.5 | numeric | dubla |
| Caracter | „R este fantastic” | caracter | caracter |
| Complex | 3+2i | complex | complex |
| Crud | ca.brut(10) | crud | crud |
Putem verifica tipul unei variabile cu funcția de clasă.
Exemplul 1: Verificarea unei variabile numerice
# Declare variables of different types # Numeric x <- 28 class(x)
ieșire:
## [1] "numeric"
Exemplul 2: Verificarea unei variabile de tip caracter
# String y <- "R is Fantastic" class(y)
ieșire:
## [1] "character"
Exemplul 3: Verificarea unei variabile logice
# Boolean z <- TRUE class(z)
ieșire:
## [1] "logical"
Rețineți că class() răspunde cu „numeric” pentru 28, chiar dacă 28 nu are parte zecimală. R a stocat-o ca double, și doar typeof() dezvăluie acest lucru. Următoarea diferență care merită învățată este modul în care aceste valori primesc nume.
Variabile în R
Variabilele sunt unul dintre elementele de bază din R care stochează valori și sunt importante pentru oricine lucrează în știința datelor. O variabilă în R poate stoca un număr, un obiect, un rezultat statistic, un vector, un set de date sau o predicție de model - practic orice produs R are ca rezultat. Putem folosi acea variabilă ulterior, pur și simplu apelând numele variabilei.
Pentru a declara o variabilă în R, trebuie să atribuim un nume de variabilă. Numele nu trebuie să conțină spațiu. Putem folosi semnul _ pentru a uni două cuvinte.
Numele pot conține litere, cifre, puncte și sublinieri, dar trebuie să înceapă cu o literă sau un punct, iar cuvinte rezervate precum TRUE, FALSE și NULL nu pot fi folosite ca nume. Pentru a adăuga o valoare variabilei, utilizați <- sau =.
Iată sintaxa:
# First way to declare a variable: use the `<-` name_of_variable <- value # Second way to declare a variable: use the `=` name_of_variable = value
În linia de comandă, putem scrie următoarele coduri pentru a vedea ce se întâmplă:
Exemplul 1: Atribuiți o valoare și afișați-o
# Print variable x
x <- 42
x
ieșire:
## [1] 42
Exemplul 2: Declararea unei a doua variabile
y <- 10 y
ieșire:
## [1] 10
Exemplul 3: Utilizarea a două variabile într-o singură expresie
# We call x and y and apply a subtraction
x-y
ieșire:
## [1] 32
O variabilă care conține mai multe valori de același tip este un vector, care este structura așteptată de aproape fiecare funcție R.
Vectori în R
Un vector este o colecție unidimensională în care fiecare element are același tip. Putem crea un vector cu toate tipurile de date R de bază învățate anterior. Cea mai simplă modalitate de a construi un vector în R este de a utiliza funcția c().
Exemplul 1: Crearea unui vector numeric
# Numerical
vec_num <- c(1, 10, 49)
vec_num
ieșire:
## [1] 1 10 49
Exemplul 2: Crearea unui vector de caractere
# Character vec_chr <- c("a", "b", "c") vec_chr
ieșire:
## [1] "a" "b" "c"
Exemplul 3: Crearea unui vector logic
# Boolean vec_bool <- c(TRUE, FALSE, TRUE) vec_bool
ieșire:
##[1] TRUE FALSE TRUE
Dacă c() primește o combinație de tipuri, nu eșuează. Forțează discret fiecare element până la cel mai general tip prezent, astfel încât c(1, "a", TRUE) devine un vector de caractere. De asemenea, putem face calcule aritmetice pe vectori în R.
Exemplul 4: Adunarea a doi vectori element cu element
# Create the vectors vect_1 <- c(1, 3, 5) vect_2 <- c(2, 4, 6) # Take the sum of A_vector and B_vector sum_vect <- vect_1 + vect_2 # Print out total_vector sum_vect
ieșire:
[1] 3 7 11
Adunarea a funcționat element cu element deoarece ambii vectori au aceeași lungime. Când lungimile diferă, R reciclează vectorul mai scurt, repetând-o până când se potrivește cu cel mai lung și avertizează doar atunci când lungimea mai mare nu este un multiplu al celei mai scurte.
Exemplul 5: Secționarea primelor cinci elemente
În R, este posibil să se secționeze un vector. În unele cazuri, suntem interesați doar de primele cinci elemente ale unui vector. Putem folosi comanda [1:5] pentru a exprimatracvalorile de la 1 la 5.
# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]
ieșire:
## [1] 1 2 3 4 5
Exemplul 6: Construiți un interval cu ajutorul coloanelor OperaTdR
Cea mai scurtă metodă de a crea un interval de valori este utilizarea operatorului două puncte (:) între două numere. De exemplu, din exemplul de mai sus, putem scrie c(1:10) pentru a crea un vector de valori de la unu la zece.
# Faster way to create adjacent values
c(1:10)
ieșire:
## [1] 1 2 3 4 5 6 7 8 9 10
Deoarece un vector își schimbă tipul în tăcere atunci când este amestecat, este important să știi cum să inspectezi și să converti tipurile la cerere.
Cum se verifică și se convertesc tipurile de date în R
Trei familii de funcții răspund la cele trei întrebări care apar constant: ce este aceasta, este aceasta de un anumit tip și poate deveni aceasta de un alt tip.
| Familie de funcții | Întrebare îi răspunde | Exemple |
|---|---|---|
| class(), typeof(), mode() | Ce tip este această valoare? | clasă(28), tip(28), mod(28) |
| este.*() | Este această valoare de tip X? | is.numeric(), is.character(), is.logical() |
| ca.*() | Poate această valoare să devină de tip X? | as.numeric(), as.character(), as.integer() |
| str() | Cum arată acest obiect în general? | str(număr_vec) |
# Three different views of the same value x <- 28 class(x) # "numeric" -- the class used for method dispatch typeof(x) # "double" -- how R stores the value internally mode(x) # "numeric" -- the older S-style mode # Ask a yes/no question about a type is.numeric(x) # TRUE is.character(x) # FALSE # Convert between types as.character(x) # "28" as.integer("28") # 28 stored as an integer as.numeric("abc") # NA, with a coercion warning
Două reguli explică majoritatea surprizelor aici. În primul rând, class() raportează clasa utilizată pentru dispecerizarea metodelor, în timp ce typeof() raportează memoria internă, motiv pentru care 28 este „numeric” pentru una și „double” pentru cealaltă. În al doilea rând, o conversie care nu poate reuși nu oprește scriptul: as.numeric("abc") returnează NA și afișează un avertisment de coerciție, astfel încât NA-urile silențioase după un import sunt aproape întotdeauna o problemă de tip. Aceeași logică determină... factori, care stochează categoriile sub formă de coduri întregi plus un tabel de niveluri.
Odată ce tipurile sunt stabilite, următorii sunt operatorii care acționează asupra lor.
R Aritmetică Operatori
Vom vedea mai întâi operatorii aritmetici de bază în R. În continuare sunt prezentați operatorii aritmetici din programarea R și ce reprezintă aceștia:
| OperaTdR | Descriere |
|---|---|
| + | Plus |
| - | SubtracTION |
| * | Multiplicare |
| / | diviziune |
| ^ sau ** | Exponențierea |
| %% | Modulo (restul după împărțire) |
| %/% | Împărțire între numere întregi (cotient, rest eliminat) |
Fiecare dintre acești operatori este vectorizat, deci aceeași expresie funcționează asupra unei singure valori sau asupra unei coloane întregi.
Exemplul 1: Adăugarea
# An addition
3 + 4
ieșire:
## [1] 7
Puteți copia și lipi cu ușurință codul R de mai sus în RStudio Consolă. În acest articol, ieșirea este afișată pe linii care încep cu ##. De exemplu, dacă scriem codul print("Guru99") consola afișează [1] "Guru99", pe care această pagină l-ar afișa ca ## [1] "Guru99“.
## marchează o linie a rezultatului imprimat, iar numărul din paranteză pătrată ([1]) este indicele primei valori de pe linia respectivă, nu face parte din rezultat.
Propozițiile care încep cu # sunt comentarii. Putem folosi # în interiorul unui script R pentru a adăuga orice notă dorim, iar R o ignoră la momentul execuției.
Exemplul 2: Înmulțirea
# A multiplication
3*5
ieșire:
## [1] 15
Exemplul 3: Diviziunea
# A division
(5+5)/2
ieșire:
## [1] 5
Exemplul 4: Exponențiere
# Exponentiation
2^5
ieșire:
## [1] 32
Exemplul 5: Modulo
# Modulo
28%%6
ieșire:
## [1] 4
Aritmetica produce numere. Următorul grup de operatori produce în schimb ADEVĂRAT și FALS.
R Relațional (Comparație) Operatori
Operatorii relaționali compară două valori și returnează un rezultat logic. Aceștia sunt operatorii care construiesc condițiile utilizate pentru filtrare și sunt vectorizați exact în același mod ca operatorii aritmetici.
| OperaTdR | Descriere |
|---|---|
| > | Mai mare ca |
| < | Less decât |
| >= | Mai mare sau egal cu |
| <= | Less decât sau egal cu |
| == | Exact egal cu |
| != | Nu este egal cu |
a <- 10 b <- 3 a > b # TRUE a < b # FALSE a >= 10 # TRUE a <= 3 # FALSE a == b # FALSE a != b # TRUE # Relational operators are vectorised scores <- c(45, 78, 90, 62) scores >= 60 # FALSE TRUE TRUE TRUE
Două obiceiuri economisesc timp aici. Folosește == pentru comparație și <- pentru atribuire, deoarece un simplu = în interiorul unei condiții este o eroare frecventă pentru începători. Și evită == pe duble: rotunjirea în virgulă mobilă înseamnă că 0.1 + 0.2 == 0.3 este FALS, deci isTRUE(all.equal(0.1 + 0.2, 0.3)) este testul sigur. Comparații pe cadre de date sortate urmați aceleași reguli.
R logic Operatori
Cu operatorii logici, dorim să returnăm valori în interiorul vectorului pe baza unor condiții logice. Tabelul de mai jos listează operatorii logici disponibili în R.
Instrucțiunile logice din R sunt încadrate între []. Putem adăuga oricâte instrucțiuni condiționale dorim, dar trebuie să le includem între paranteze. Putem urma această structură pentru a crea o instrucțiune condițională:
variable_name[(conditional_statement)]
Cu nume_variabilă referindu-ne la variabila pe care dorim să o folosim pentru instrucțiune, creăm instrucțiunea logică, de exemplu nume_variabilă > 0. În final, folosim paranteze pătrate pentru a finaliza instrucțiunea logică. Mai jos este un exemplu de instrucțiune logică.
Exemplul 1: Comparați fiecare element al unui vector
# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5
ieșire:
## [1]FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
În rezultatul de mai sus, R citește fiecare valoare și o compară cu instrucțiunea logical_vector>5. Dacă valoarea este strict mai mare decât cinci, atunci condiția este TRUE, altfel FALSE. R returnează un vector de TRUE și FALSE.
Exemplul 2: Păstrați doar elementele care se potrivesc
În exemplul de mai jos, vrem să ex.tracvalorile care îndeplinesc doar condiția „este strict mai mare decât cinci”. Pentru aceasta, putem încadra condiția între paranteze pătrate precedate de vectorul care conține valorile.
# Print value strictly above 5
logical_vector[(logical_vector>5)]
ieșire:
## [1] 6 7 8 9 10
Exemplul 3: Combinați două condiții
# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]
ieșire:
## [1] 5 6
Exemplul 3 folosește intenționat simbolul ampersand simplu &. Operatorii cu un singur caracter & și | compară vectorii element cu element și returnează un vector, ceea ce este necesar pentru subseturi. Formele duble && și || returnează o valoare și aparțin condițiilor if() și while(). Deoarece R 4.3.0, transmiterea unui argument mai lung decât un element către && sau || este o eroare mai degrabă decât un avertisment, deci cele două familii nu mai sunt interschimbabile. Operatorul ! neagă o condiție, iar xor() dă un SAU exclusiv.
R Sarcină Operatori
Operatorii de atribuire leagă o valoare de un nume. R oferă mai mulți dintre aceștia decât majoritatea limbajelor de programare, iar diferențele contează odată ce codul se mută în funcții.
| OperaTdR | Descriere |
|---|---|
| <- | Atribuirea la stânga, alegerea idiomatică în R |
| = | Atribuire la stânga, dar în mod normal rezervată argumentelor funcției |
| -> | Atribuire corectă, validă, dar rar utilizată |
| << - | Superatribuire care caută medii înglobante |
| - >> | Superatribuire corectă |
# Left assignment -- the idiomatic form count <- 5 # Equals sign: works, but reserve it for function arguments count = 5 round(3.14159, digits = 2) # Right assignment 5 -> count # Superassignment, used inside functions to reach an outer scope count <<- 5
Ghidurile de stil recomandă <- pentru crearea obiectelor și = pentru denumirea argumentelor în interiorul unui apel, deoarece cele două roluri rămân apoi distincte vizual. Folosiți <<- cu moderație: modifică un obiect în afara funcției curente și face mai dificilă raționamentul asupra codului. Odată ce atribuirea și tipurile sunt familiare, următorii pași sunt importul de date reale și Reshaping cu dplyr; Prezentare generală a limbajului R pune întregul lanț de instrumente în context.

