R:n oppiminen | Osa 2 | Muuttujat ja funktiot
Muuttujat
x <- (1:10)x = (1:10)(1:10) -> xassign("x", 1:10)
Kaikki yllä olevat tavat määrittävät taulukon luvuista 1 lukuun 10 muuttujaan x.
Nämä ovat määritysoperaattorit =, ->, <- .
Toinen yleinen funktio vektorin tai listan luomiseen on c(…) funktio.
c(1,10:13)Tämän tuloste olisi taulukko1 10 11 12 13. Tämä tarkoittaa pilkuilla erotettuja objekteja/muuttujia yhdistämistä.c(1:5, 10.5, "next")Tämän tuloste olisi taulukko"1" "2" "3" "4" "5" "10.5" "next".y = c(1,2,3)&x = c(y, 1, y)Tämä on esimerkki muuttujien käyttämisestä uusien muuttujien luomiseen. Tässäy:n arvo olisi1 2 3, kun taasx:n arvo olisi1 2 3 1 1 2 3.
c(…) funktion lisäkäytöstä katso -
Sisäänrakennetut funktiot
c(…)— Kuten selitettiin yllä.ls()taiobjects()— Antaa luettelon olemassa olevista objekteista, jotka on luotu.rm("x")— Poistaa objektin. Parametri on objektin nimi.sum("x")— Antaa vektorinxsumman. Esimerkiksi, josxon1 2 3 1 1 2 3niinsum("x")olisi13.sqrt("x")— Antaa vektorinxneliöjuuren. Esimerkiksi josxon1 4 9niinsqrt("x")olisi toinen vektori, jonka arvot ovat1 2 3.seq(…)— Tätä funktiota käytetään numerosarjan muodostamiseen. Se ottaa eri parametreja, kutenfrom(Sarjan aloitusarvo),to(Sarjan loppuarvo),by(Luku, jolla sarjaa kasvatetaan),length.out(Sarjan pituus) jaalong.with(Tämä on vektoriluettelo, jonka pituus on n, ja sitä käytetään vain tämän välitetyn luettelon pituuden saamiseksi. Outoa 😷) Esimerkki:-seq(from=1, to=4, by=0.5)— Antaa sarjan luvusta1lukuun4, jossa on0.5lisäys. Lisääseq(…)täällä.paste(…)Tätä funktiota käytetään merkkijonojen tekemiseen vektorien ketjuttamisen avulla käyttämällä 2 parametria, nimittäinsepjacollapse.septarjoaa erottimen ketjutettujen vektorien välille, kun taascollapsetarjoaa erottimen, joka ketjuttaa arvot ketjutetussa vektorissa. (Sisäkkäinen rakenne? 🤒) Opitaan se esimerkkien avulla.paste("xyz", 1:3)—"xyz 1" "xyz 2" "xyz 3"(Tämä on ilmansepjacollapse)paste("xyz", c(1,2,"variable",3), sep=",")—"xyz,1" "xyz,2" "xyz,variable" "xyz,3"(Tämä on vainsep-parametrilla )paste(c(1:5), c(5:10), sep = ": ", collapse = "; ")—"1: 5; 2: 6; 3: 7; 4: 8; 5: 9; 1: 10"(Tämä onsepjacollapse-parametreilla; Huomaa, että tämä muodostaa yhden merkkijonon 😄.) Lisääpaste(…)täällä.rep(x, …)— Kuten nimi viittaa, tätä funktiota käytetään olemassa olevan vektorin toistamiseen. Parametrit, jotka tämä funktio voi ottaa, ovattimes(Kuinka monta kertaa vektori tulee toistaa),length.out(Haluttu tulostevektorin pituus) jaeach(Kuinka monta kertaa jokainen vektorin elementti tulee toistaa)rep(c(1,2,3), 3) tai rep(c(1:3), times=3)—1 2 3 1 2 3 1 2 3rep(c(1:3), each=3)—1 1 1 2 2 2 3 3 3Lisäärep(x, …)täällä.
Käyttäjän määrittelemät funktiot
Alla oleva esimerkki näyttää yksinkertaisen tavan kirjoittaa yhden rivin funktio, joka palauttaa muuttujan neliön. Funktion nimi tässä on fn.
fn <- function(a) {a*a}
fn(10)
Esimerkki koodiblokista funktiossa.
fn -> function(a, b) {
c = a * b
c = c + b
print(x)
}
fn(10, 20)
Funktiot, joissa on silmukat,if-else.
primeNumber = function(n) {
if(n>=2) {
s = seq(2,n) p = c() #Vektorin alustaminen, joka varastoi alkuluvut
for(i in seq(2,n)) {
if(any(s == i) {
p = c(p, i)
s = c(s[(s%%i) != 0], i)
}
}
return(p)
} else {
stop("Input greater than 2")
}
}
Yllä oleva esimerkki palauttaa vektorin, jossa on kaikki alkuluvut lukuun saakka funktiolle välitetty n. stop funktio tässä lopettaa suorituksen ja heittää virheen.
Alkuperäinen p = c() käytetään alkuluvun varastoivaksi vektoriksi alustamiseen. Ja s = seq (2,n) käytetään vektorin alustamiseen siihen asti, jota sitten silmukoitaan.
Silmukka tarkistaa, onko arvo olemassa vektorissa s, joka määritettiin aiemmin käyttämällä any funktiota. Ja jos se täsmää, niin se lisää tuon arvon alkulukuvektoriin ja päivittää tarkistettavaksi vektorin eli s kaikilla luvuilla, jotka eivät ole jaollisia nykyisellä i
Silmukan lopussa p vektori sisältää kaikki alkuluvut.
Viitteet
Kiitos lukemisesta. Seuraavassa artikkelissani selitän piirtofunktioita. Sen lisäksi joitain oivalluksia paketeista ja tietojoukoista.
Myös, jos et ole lukenut osaa 1. Voit lukea sen täällä.
Jaa kysymyksesi alla. Ehdotukset ovat tervetulleita. 🙌



