Vrste podataka u R s primjerom
⚡ Pametni sažetak
Tipovi podataka u R-u definiraju kako se vrijednosti pohranjuju u memoriju, a operatori odlučuju što R može s njima učiniti. Ovdje su obrađeni vektori, varijable, aritmetički, relacijski, logički i operatori dodjeljivanja s primjerima koji se mogu izvesti.

Koji su tipovi podataka u R-u?
Slijede tipovi podataka ili strukture podataka u R programiranju:
- Skalari
- Vektori (numerički, znakovni, logički)
- matrice
- Okviri podataka
- arena
Taj popis miješa dvije povezane ideje, a njihovo odvajanje olakšava praćenje ostatka ove stranice. tip podataka opisuje što je pojedinačna vrijednost - broj, dio teksta, TOČNO ili NETOČNO. struktura podataka opisuje koliko se vrijednosti drži zajedno i u kojem obliku. Skalari, vektori, matrice, okviri podataka i liste su strukture; vrijednosti unutar njih i dalje pripadaju jednom od osnovnih tipova R-a.
| Struktura | Dimenzije | Jesu li dopuštene miješane vrste? | Tipična upotreba |
|---|---|---|---|
| skalar | Vektor duljine 1 | Ne | Jedno mjerenje ili zastavica |
| vektor | 1 | Ne | Stupac očitanja jedne vrste |
| Distributori | 2 | Ne | Numeričke mreže i linearna algebra |
| Okvir podataka | 2 | Da, jedna vrsta po stupcu | Tablični skupovi podataka |
| Popis | 1, ali ugnijezdivo | Da, bilo što po elementu | Rezultati modela i miješani spremnici |
R nema zaseban tip skalara: skalar je jednostavno vektor duljine jedan, zbog čega se toliko R koda piše za cijele vektore odjednom.
Osnovni tipovi podataka u R-u
Svaka vrijednost u R pripada jednom od malog skupa osnovnih (atomskih) tipova:
- 4.5 je decimalna vrijednost koja se naziva numerički zapis.
- Broj 4 izgleda kao cijeli broj, ali R ga i dalje pohranjuje kao dvostruki broj. Napišite 4L kada je potreban pravi cijeli broj.
- TRUE ili FALSE je logička vrijednost, koja se u R-u naziva logička vrijednost.
- Vrijednost unutar ” ” ili ' ’ je tekst (niz znakova). Te vrijednosti nazivaju se znakovi.
Dva dodatna tipa upotpunjuju skup. Kompleksne vrijednosti poput 3+2i sadrže realni i imaginarni dio, a sirove vrijednosti sadrže bajtove. Obje se rijetko pojavljuju u svakodnevnoj analizi, ali su navedene u osnovnom R-u. dokumentacija za typeof() uz četiri uobičajene vrste.
| Tip | Primjer vrijednosti | class() vraća | typeof() vraća |
|---|---|---|---|
| logičan | TRUE | logičan | logičan |
| Integer | 4L | cijeli | cijeli |
| Double (numerički) | 4.5 | numerički | dvostruko |
| Lik | "R je fantastičan" | lik | lik |
| Kompleks | 3+2i | kompleks | kompleks |
| Sirov | kao.sirovo(10) | sirov | sirov |
Tip varijable možemo provjeriti pomoću funkcije klase.
Primjer 1: Provjera numeričke varijable
# Declare variables of different types # Numeric x <- 28 class(x)
Izlaz:
## [1] "numeric"
Primjer 2: Provjera znakovne varijable
# String y <- "R is Fantastic" class(y)
Izlaz:
## [1] "character"
Primjer 3: Provjera logičke varijable
# Boolean z <- TRUE class(z)
Izlaz:
## [1] "logical"
Imajte na umu da class() odgovara s "numeric" za 28 iako 28 nema decimalni dio. R ga je pohranio kao double, a samo typeof() to otkriva. Sljedeća razlika koju vrijedi naučiti je kako te vrijednosti dobivaju imena.
Varijable u R-u
Varijable su jedan od osnovnih gradivnih blokova u R-u koji pohranjuju vrijednosti i važne su svima koji se bave znanošću o podacima. Varijabla u R-u može pohraniti broj, objekt, statistički rezultat, vektor, skup podataka ili predviđanje modela - u osnovi sve što R ispisuje. Tu varijablu možemo kasnije koristiti jednostavnim pozivanjem naziva varijable.
Za deklariranje varijable u R-u, moramo joj dodijeliti naziv. Naziv ne smije sadržavati razmak. Možemo koristiti znak _ za spajanje dvije riječi.
Imena mogu sadržavati slova, znamenke, točke i podvlake, ali moraju započeti slovom ili točkom, a rezervirane riječi poput TRUE, FALSE i NULL ne mogu se koristiti kao imena. Za dodavanje vrijednosti varijabli koristite <- ili =.
Evo sintakse:
# First way to declare a variable: use the `<-` name_of_variable <- value # Second way to declare a variable: use the `=` name_of_variable = value
U naredbenom retku možemo napisati sljedeće kodove da vidimo što će se dogoditi:
Primjer 1: Dodijelite vrijednost i ispiši je
# Print variable x
x <- 42
x
Izlaz:
## [1] 42
Primjer 2: Deklariranje druge varijable
y <- 10 y
Izlaz:
## [1] 10
Primjer 3: Korištenje dvije varijable u jednom izrazu
# We call x and y and apply a subtraction
x-y
Izlaz:
## [1] 32
Varijabla koja sadrži nekoliko vrijednosti istog tipa je vektor, što je struktura koju očekuje gotovo svaka R funkcija.
Vektori u R-u
Vektor je jednodimenzionalna kolekcija u kojoj svaki element dijeli isti tip. Možemo stvoriti vektor sa svim osnovnim R tipovima podataka koje smo ranije naučili. Najjednostavniji način za izgradnju vektora u R-u je korištenje funkcije c().
Primjer 1: Stvaranje numeričkog vektora
# Numerical
vec_num <- c(1, 10, 49)
vec_num
Izlaz:
## [1] 1 10 49
Primjer 2: Izrada vektora znakova
# Character vec_chr <- c("a", "b", "c") vec_chr
Izlaz:
## [1] "a" "b" "c"
Primjer 3: Stvaranje logičkog vektora
# Boolean vec_bool <- c(TRUE, FALSE, TRUE) vec_bool
Izlaz:
##[1] TRUE FALSE TRUE
Ako c() primi mješavinu tipova, ne doživi grešku. Tiho prisiljava svaki element na najopćenitiji tip koji je prisutan, tako da c(1, "a", TRUE) postaje vektor znakova. Također možemo izvoditi aritmetičke izračune na vektorima u R-u.
Primjer 4: Zbrajanje dva vektora element po 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
Izlaz:
[1] 3 7 11
Zbrajanje se izvršavalo element po element jer oba vektora imaju istu duljinu. Kada se duljine razlikuju, R reciklira kraći vektor, ponavljajući ga dok se ne podudara s duljim i upozorava samo kada dulja duljina nije višekratnik kraće.
Primjer 5: Rastavljanje prvih pet elemenata
U R-u je moguće razrezati vektor. U nekim slučajevima zanima nas samo prvih pet elemenata vektora. Možemo koristiti naredbu [1:5] za prikaztracvrijednosti od 1 do 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]
Izlaz:
## [1] 1 2 3 4 5
Primjer 6: Izgradite raspon s dvotočkom Operahumka
Najkraći način za stvaranje raspona vrijednosti je korištenje operatora dvotočke (:) između dva broja. Na primjer, iz gornjeg primjera možemo napisati c(1:10) za stvaranje vektora vrijednosti od jedan do deset.
# Faster way to create adjacent values
c(1:10)
Izlaz:
## [1] 1 2 3 4 5 6 7 8 9 10
Budući da vektor tiho mijenja tip kada se miješa, isplati se znati kako pregledati i pretvoriti tipove na zahtjev.
Kako provjeriti i pretvoriti tipove podataka u R-u
Tri obitelji funkcija odgovaraju na tri pitanja koja se stalno pojavljuju: što je ovo, je li ovo zadanog tipa i može li ovo postati drugi tip.
| Obitelj funkcija | Pitanje na koje odgovara | Primjeri |
|---|---|---|
| klasa(), tip(), način() | Koje je vrste ova vrijednost? | klasa(28), tip(28), način(28) |
| je.*() | Je li ova vrijednost tipa X? | je.brojčani(), je.znakovni(), je.logički() |
| kao.*() | Može li ova vrijednost postati tipa X? | kao.broj(), kao.znak(), kao.cijeli broj() |
| str() | Kako ovaj objekt izgleda općenito? | str(broj_broja) |
# 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
Dva pravila objašnjavaju većinu iznenađenja ovdje. Prvo, class() izvještava o klasi koja se koristi za otpremu metode, dok typeof() izvještava o internoj memoriji, zbog čega je 28 "numeric" za jednu i "double" za drugu. Drugo, konverzija koja ne može uspjeti ne zaustavlja skriptu: as.numeric("abc") vraća NA i ispisuje upozorenje o prisili, pa su tihi NA nakon uvoza gotovo uvijek problem s tipom. Ista logika pokreće čimbenici, koji pohranjuju kategorije kao cjelobrojne kodove plus tablicu razina.
Nakon što smo odredili tipove, sljedeći su operatori koji na njih djeluju.
R Aritmetika Operaulagatelji
Prvo ćemo vidjeti osnovne aritmetičke operatore u R-u. Slijede aritmetički operatori u R programiranju i što oni znače:
| Operahumka | Description |
|---|---|
| + | Dodatak |
| - | ispodtracANJE |
| * | Množenje |
| / | Podjela |
| ^ ili ** | eksponenciranje |
| %% | Modulo (ostatak nakon dijeljenja) |
| %/% | Cjelobrojno dijeljenje (količnik, ostatak se odbacuje) |
Svaki od ovih operatora je vektoriziran, tako da isti izraz funkcionira na jednoj vrijednosti ili na cijelom stupcu.
Primjer 1: Zbrajanje
# An addition
3 + 4
Izlaz:
## [1] 7
Gornji R kod možete jednostavno kopirati i zalijepiti u RStudio Konzola. U ovom članku izlaz je prikazan u retcima koji počinju s ##. Na primjer, ako napišemo kod print("Guru99") konzola ispisuje [1] "Guru99", što bi ova stranica prikazala kao ## [1] "Guru99 ".
Znak ## označava redak ispisa, a broj u uglatoj zagradi ([1]) je indeks prve vrijednosti u tom retku, a ne dio rezultata.
Rečenice koje počinju s # su komentari. Možemo koristiti # unutar R skripte za dodavanje bilo koje bilješke, a R je ignorira tijekom izvođenja.
Primjer 2: Množenje
# A multiplication
3*5
Izlaz:
## [1] 15
Primjer 3: Dijeljenje
# A division
(5+5)/2
Izlaz:
## [1] 5
Primjer 4: Potenciranje
# Exponentiation
2^5
Izlaz:
## [1] 32
Primjer 5: Modulo
# Modulo
28%%6
Izlaz:
## [1] 4
Aritmetika daje brojeve. Sljedeća skupina operatora umjesto toga daje TRUE i FALSE.
R Relacijski (Usporedba) Operaulagatelji
Relacijski operatori uspoređuju dvije vrijednosti i vraćaju logičan rezultat. To su operatori koji grade uvjete korištene za filtriranje i vektoriziraju se na potpuno isti način kao i aritmetički operatori.
| Operahumka | Description |
|---|---|
| > | Veći od |
| < | Less od |
| >= | Veći od ili jednak |
| <= | Less nego ili jednako |
| == | Točno jednako |
| != | Nije jednako |
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
Dvije navike ovdje štede vrijeme. Koristite == za usporedbu i <- za dodjelu, jer je jednostruki = unutar uvjeta česta početnička pogreška. I izbjegavajte == na dvostrukim brojevima: zaokruživanje s pomičnim zarezom znači da je 0.1 + 0.2 == 0.3 NETOČNO, pa je isTRUE(all.equal(0.1 + 0.2, 0.3)) siguran test. Usporedbe na sortirani okviri podataka slijediti ista pravila.
R Logično Operaulagatelji
S logičkim operatorima želimo vratiti vrijednosti unutar vektora na temelju logičkih uvjeta. Tablica u nastavku navodi logičke operatore dostupne u R-u.
Logičke naredbe u R-u su unutar znaka [. Možemo dodati onoliko uvjetnih naredbi koliko želimo, ali ih moramo uključiti u zagrade. Možemo slijediti ovu strukturu za stvaranje uvjetne naredbe:
variable_name[(conditional_statement)]
S varijable_name koja se odnosi na varijablu koju želimo koristiti za naredbu, stvaramo logičku naredbu, na primjer varijable_name > 0. Na kraju, koristimo uglate zagrade za dovršetak logičke naredbe. U nastavku je primjer logičke naredbe.
Primjer 1: Usporedite svaki element vektora
# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5
Izlaz:
## [1]FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
U gornjem izlazu, R čita svaku vrijednost i uspoređuje je s naredbom logical_vector>5. Ako je vrijednost strogo veća od pet, tada je uvjet TRUE, inače FALSE. R vraća vektor TRUE i FALSE.
Primjer 2: Zadržite samo elemente koji se podudaraju
U donjem primjeru želimo extracvrijednosti koje zadovoljavaju samo uvjet 'strogo je veće od pet'. Za to možemo uvjet staviti unutar uglatih zagrada ispred kojih se nalazi vektor koji sadrži vrijednosti.
# Print value strictly above 5
logical_vector[(logical_vector>5)]
Izlaz:
## [1] 6 7 8 9 10
Primjer 3: Kombiniranje dvaju uvjeta
# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]
Izlaz:
## [1] 5 6
Primjer 3 namjerno koristi jedan ampersand &. Jednoznakovni operatori & i | uspoređuju vektore element po element i vraćaju vektor, što je ono što podskupljanju treba. Dvostruki oblici && i || vraćaju jednu vrijednost i pripadaju uvjetima if() i while(). Budući da R 4.3.0, prosljeđivanje argumenta duljeg od jednog elementa operatorima && ili || predstavlja grešku, a ne upozorenje, tako da te dvije porodice operatora više nisu zamjenjive. Operator ! negira uvjet, a xor() daje isključivo ILI.
Zadatak R Operaulagatelji
Operatori dodjeljivanja vežu vrijednost za ime. R ih nudi više od većine jezika, a razlike postaju bitne kada se kod proširi. Funkcije.
| Operahumka | Description |
|---|---|
| <- | Lijevo dodjeljivanje, idiomatski izbor u R-u |
| = | Lijeva dodjela, ali obično rezervirana za argumente funkcije |
| -> | Dodjeljivanje ispravnosti, valjano, ali rijetko korišteno |
| <<- | Superdodjela koja pretražuje okolna okruženja |
| - >> | Desna superasignacija |
# 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
Stilski vodiči preporučuju <- za stvaranje objekata i = za imenovanje argumenata unutar poziva, jer tada dvije uloge ostaju vizualno različite. Koristite <<- rijetko: mijenja objekt izvan trenutne funkcije i otežava razmišljanje o kodu. Nakon što su dodjela i tipovi ugodni, sljedeći koraci su uvoz stvarnih podataka i reshaping to sa dplyr; Pregled R jezika stavlja cijeli lanac alata u kontekst.

