Lär dig R | Del 2 | Variabler & Funktioner
Variabler
x <- (1:10)x = (1:10)(1:10) -> xassign("x", 1:10)
Alla ovanstående sätt tilldelar en matris från 1 till 10 till variabeln x.
Dessa är tilldelningsoperatörerna =, ->, <- .
En annan vanlig funktion för att skapa en vektor eller en lista är funktionen c(…).
c(1,10:13)Resultatet för detta skulle vara en matris1 10 11 12 13. Detta betyder sammanslagning av kommaseparerade objekt/variabler.c(1:5, 10.5, "next")Resultatet för detta skulle vara en matris"1" "2" "3" "4" "5" "10.5" "next".y = c(1,2,3)&x = c(y, 1, y)Detta är ett exempel på användning av variabler för att skapa nya variabler. Här skulle värdet föryvara1 2 3medan värdet förxskulle vara1 2 3 1 1 2 3.
För ytterligare användning av funktionen c(…) se-
Inbyggda Funktioner
c(…)— Som förklarat ovan.ls()ellerobjects()— Ger en lista över befintliga objekt som har skapats.rm("x")— Tar bort ett objekt. Parametern är namnet på objektet.sum("x")— Ger summan av vektornx. Till exempel, omxär1 2 3 1 1 2 3skullesum("x")vara13.sqrt("x")— Ger kvadratroten av vektornx. Till exempel omxär1 4 9skullesqrt("x")vara en annan vektor med värdena1 2 3.seq(…)— Denna funktion används för att generera en sekvens av tal. Den tar olika parametrar somfrom(Startvärde för sekvensen),to(Slutvärde för sekvensen),by(Tal som sekvensen ska ökas med),length.out(Längd på sekvensen) ochalong.with(Detta är en lista med vektor med längd n och används endast för att få längden på denna godkända lista. Konstigt 😷) Exempel:-seq(from=1, to=4, by=0.5)— Ger en sekvens från1till4med0.5ökning. Mer omseq(…)här.paste(…)Denna funktion används för att skapa strängar med sammanslagning av vektorer med 2 parametrar nämligensep&collapse.sepger en separator mellan de sammanslagna vektorerna medancollapseger en separator som sammanslår värdena i den sammanslagna vektorn. (Inception? 🤒) Låt oss lära oss det med några exempel.paste("xyz", 1:3)—"xyz 1" "xyz 2" "xyz 3"(Detta är utansep&collapse)paste("xyz", c(1,2,"variable",3), sep=",")—"xyz,1" "xyz,2" "xyz,variable" "xyz,3"(Detta är endast medsep)paste(c(1:5), c(5:10), sep = ": ", collapse = "; ")—"1: 5; 2: 6; 3: 7; 4: 8; 5: 9; 1: 10"(Detta är medsepochcollapse; Lägg märke till att detta bildar en enda sträng 😄.) Mer ompaste(…)här.rep(x, …)— Som namnet antyder används denna funktion för att upprepa den befintliga vektorn. Parametrarna denna funktion kan ta ärtimes(Antal gånger vektorn ska upprepas),length.out(Önskad längd på utdatavektorn) &each(Antal gånger varje element i vektorn ska upprepas)rep(c(1,2,3), 3) or 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 3Mer omrep(x, …)här.
Användardefinierade funktioner
Exemplet nedan visar ett enkelt sätt att skriva en enradsfunktion som returnerar kvadraten på en variabel. Funktionsnamnet här är fn.
fn <- function(a) {a*a}
fn(10)
Exempel på ett kodblock i en funktion.
fn -> function(a, b) {
c = a * b
c = c + b
print(x)
}
fn(10, 20)
Funktioner med loops,if-else.
primeNumber = function(n) {
if(n>=2) {
s = seq(2,n) p = c() #Initialising the vector which stores prime numbers
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")
}
}
Exemplet ovan returnerar en vektor med alla primtal upp till n som skickas till funktionen. Funktionen stop här stoppar körningen och kastar ett fel.
Den initiala p = c() används för att initiera vektorn som lagrar primtalet. Och s = seq (2,n) används för att initiera vektorn fram till, som sedan loopar genom.
Loopen kontrollerar om värdet är närvarande i vektorn s definierad tidigare med hjälp av funktionen any. Och om det matchar lägger den till det värdet till primtalsvektorn och uppdaterar vektorn som ska kontrolleras med d.v.s s med alla tal som inte är delbara med den aktuella i
I slutet av loopen innehåller p vektorn alla primtal.
Referenser
Tack för att du läste. I min nästa artikel kommer jag att förklara ritfunktioner. Förutom det, några insikter om paket & datamängder.
Dessutom, om du inte har läst del 1. Du kan läsa den här.
Ställ dina frågor nedan. Förslag är välkomna. 🙌



