R leren | Deel 2 | Variabelen & Functies
Variabelen
x <- (1:10)x = (1:10)(1:10) -> xassign("x", 1:10)
Al de bovenstaande manieren wijzen een array van 1 tot 10 toe aan variabele x.
Dit zijn de toewijzingsoperators =, ->, <- .
Een ander veel gebruikte functie voor het maken van een vector of lijst is de c(…) functie.
c(1,10:13)De uitvoer hiervan zou een array1 10 11 12 13zijn. Dit betekent het samenvoegen van door komma's gescheiden objecten/variabelen.c(1:5, 10.5, "next")De uitvoer hiervan zou een array"1" "2" "3" "4" "5" "10.5" "next"zijn.y = c(1,2,3)&x = c(y, 1, y)Dit is een voorbeeld van het gebruiken van variabelen om nieuwe variabelen aan te maken. Hier zou de waarde vany1 2 3zijn terwijl die vanx1 2 3 1 1 2 3zou zijn.
Voor verder gebruik van de c(…) functie verwijzen naar-
Ingebouwde Functies
c(…)— Zoals uitgelegd hierboven.ls()ofobjects()— Geeft een lijst van bestaande objecten die gemaakt zijn.rm("x")— Verwijdert een object. De parameter is de naam van het object.sum("x")— Geeft de som van de vectorx. Bijvoorbeeld, alsxis1 2 3 1 1 2 3dan zousum("x")13zijn.sqrt("x")— Geeft de vierkantswortel van de vectorx. Bijvoorbeeld alsxis1 4 9dan zousqrt("x")een andere vector zijn met waarden1 2 3.seq(…)— Deze functie wordt gebruikt om een reeks getallen te genereren. Het neemt verschillende parameters zoalsfrom(Beginwaarde van reeks),to(Eindwaarde van reeks),by(Getal waarmee de reeks moet worden verhoogd),length.out(Lengte van reeks) enalong.with(Dit is een lijst van vector met lengte n en wordt alleen gebruikt om de lengte van deze doorgegeven lijst te krijgen. Vreemd 😷) Voorbeeld:-seq(from=1, to=4, by=0.5)— Geeft een reeks van1tot4met0.5verhoging. Meer overseq(…)hier.paste(…)Deze functie wordt gebruikt om strings te maken met behulp van een aaneenschakeling van vectoren met 2 parameters, te wetensep&collapse.sepbiedt een scheidingsteken tussen de aaneengekoppelde vectoren terwijlcollapseeen scheidingsteken biedt dat de waarden in de aaneengekoppelde vector aaneenschakelt. (Inception? 🤒) Laten we het met enkele voorbeelden leren.paste("xyz", 1:3)—"xyz 1" "xyz 2" "xyz 3"(Dit is zondersep&collapse)paste("xyz", c(1,2,"variable",3), sep=",")—"xyz,1" "xyz,2" "xyz,variable" "xyz,3"(Dit is alleen metsep)paste(c(1:5), c(5:10), sep = ": ", collapse = "; ")—"1: 5; 2: 6; 3: 7; 4: 8; 5: 9; 1: 10"(Dit is metsepencollapse; Merk hier op dat dit een enkele string vormt 😄.) Meer overpaste(…)hier.rep(x, …)— Zoals de naam al aangeeft, wordt deze functie gebruikt om de bestaande vector te herhalen. De parameters die deze functie kan aannemen zijntimes(Aantal keren dat de vector moet worden herhaald),length.out(Gewenste lengte van uitvoervector) &each(Aantal keren dat elk element van de vector moet worden herhaald)rep(c(1,2,3), 3) of 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 3Meer overrep(x, …)hier.
Door gebruiker gedefinieerde functies
Het onderstaande voorbeeld toont een eenvoudige manier om een eenregelige functie te schrijven die het kwadraat van een variabele retourneert. De functienaam hier is fn.
fn <- function(a) {a*a}
fn(10)
Voorbeeld van een blok code in een functie.
fn -> function(a, b) {
c = a * b
c = c + b
print(x)
}
fn(10, 20)
Functies met lussen,if-else.
primeNumber = function(n) {
if(n>=2) {
s = seq(2,n) p = c() #Initialiseren van de vector die priemgetallen opslaat
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("Invoer groter dan 2")
}
}
Het bovenstaande voorbeeld retourneert een vector met alle priemgetallen tot n doorgegeven aan de functie. De stop functie stopt hier de uitvoering en gooit een fout.
De initiële p = c() wordt gebruikt om de vector te initialiseren die het priemgetal opslaat. En s = seq (2,n) wordt gebruikt om de vector tot te initialiseren, die vervolgens wordt herhaald.
De lus controleert of de waarde aanwezig is in de vector s die eerder is gedefinieerd met behulp van de any functie. En als deze overeenkomt, voegt het die waarde toe aan de priemvector en werkt het de te controleren vector bij, d.w.z. s met alle getallen die niet deelbaar zijn door de huidige i
Aan het einde van de lus bevat de p vector alle priemgetallen.
Referenties
Dank je voor het lezen. In mijn volgende artikel zal ik plot functies uitleggen. Daarnaast enkele inzichten in pakketten & gegevenssets.
Ook, als je deel 1 nog niet hebt gelezen. Je kunt het hier lezen.
Zet je vragen hieronder. Suggesties zijn welkom. 🙌



