R (ohjelmointikieli)
R | |
---|---|
Kehittäjä | Ross Ihaka, Robert Gentleman |
Vakaa versio | 4.4.1 ()[1] |
Vaikutteet | S, Scheme |
Verkkosivu | https://www.r-project.org |
R on ohjelmointikieli ja ohjelmointiympäristö tilastolliseen laskentaan ja grafiikan tuottamiseen.[2] R on GNU-projekti, joka on samankaltainen kuin Bell Labsilla kehitetty S-kieli ja sen ympäristö.[2]
R-kielellä voi tehdä muutamalla rivillä asioita, jotka vaatisivat tunteja taulukkolaskentaohjelmalla tai sivuittain Java-koodia.[3] R ei kuitenkaan sovellu monimutkaisiin tietorakenteisiin, tehokkaseen tiedon kyselyyn tai työskentelyyn tietojoukoilla, jotka eivät mahdu tietokoneen muistiin.[3]
Kieltä käytetään data-analyysiin akateemisessa maailmassa ja suurissa yrityksissä.[4] Kielestä sanotaan tulleen lingua franca tiedonlouhinnan edettyä kulta-ajalle.[4] Kielen sanotaan saaneen seuraajia koska tilastotieteilijät, insinöörit ja tieteilijät joilla ei ole ohjelmointiosaamista kokevat sen helpoksi käyttää.[4] Kieleen on julkaistu vuoteen 2017 mennessä yli 10 000 laajennuspakettia.[5]
Historia
[muokkaa | muokkaa wikitekstiä]Kielen ovat kehittäneet Aucklandin yliopistossa Uudessa-Seelannissa Ross Ihaka ja Robert Gentleman.[4][6] R-ohjelmointikielessä on vaikutteita John Chambersin kehittämästä S-kielestä, sekä Scheme-kielestä.[6]
Tekijät julkaisivat R:n avoimena lähdekoodina ja se on vapaasti saatavissa GNU GPL -lisenssin alla.[4][2]
Ohjelmaversio 4.2.1 julkaistiin kesäkuussa 2022.[7]
Kieli
[muokkaa | muokkaa wikitekstiä]Kieli on suunniteltu aidon ohjelmointikielen ympärille ja se mahdollistaa laajentamisen uusien funktioiden lisäämisellä.[2]
Yksinkertainen interaktiivinen käyttötapaus:[3]
> 1 + 2 + 3
[1] 6
Tulostettava palaute kertoo hakasuluissa indeksin ja sen jälkeen arvon. R-kielessä jokainen konsolissa syötetty arvo tulkitaan vektorina.[3]
Pidempiä vektoreita voidaan syöttää c()
-funktion (lyhenne sanasta combine) kautta:[3]
> c(0, 1, 1, 2, 3, 5, 8)
[1] 0 1 1 2 3 5 8
Muuttujaan sijoittaminen ja lausekkeen suorittaminen muuttujilla:[3]
> x <- 1
> y <- 2
> z <- c(x,y)
> z
[1] 1 2
Kieli tukee olio-ohjelmointia.[3]
Ohjelmointiympäristö
[muokkaa | muokkaa wikitekstiä]Kielen ohjelmointiympäristöstä on saatavilla useita versiota: sitä voidaan käyttää komentoriviltä, graafisen käyttöliittymän kautta tai laajennuksena muihin sovelluksiin kuten Emacsiin.[3]
Ohjelmasta on saatavilla käännetyt binääriversiot on tarjolla Windows-, Macintosh- sekä monille Unix-järjestelmille. Graafisia käyttöliittymiä ovat muun muassa RStudio, GR, RKWard, SciViews-R ja Rcmdr.
Laajennukset
[muokkaa | muokkaa wikitekstiä]R-kielelle on saatavilla laajennuksia, jotka ovat useiden käyttäjien tuottamia toimintokirjastoja. Lisäpaketit sisältävät usein funktiota ja työkaluja, joiden avulla tiettyjen ongelmien ratkaisu helpottuu oleellisesti, kun taas toiset lisäpaketit sisältävät työkaluja uusien tilastollisten menetelmien käyttöön.
Laajennuspaketteja voi asentaa CRAN (Comprehensive R Archive Network) -palvelusta komennolla[8]
install.packages("thepackagename")
jossa thepackagename
on asennettavan paketin nimi.
Esimerkkiohjelma
[muokkaa | muokkaa wikitekstiä]Alla oleva R-kielinen ohjelma tekee Mandelbrotin joukkoa kuvaavan GIF-animaation.
install.packages("caTools") # install external package
library(caTools) # external package providing write.gif function
jet.colors <- colorRampPalette(c("red", "blue", "#007FFF", "cyan", "#7FFF7F",
"yellow", "#FF7F00", "red", "#7F0000"))
dx <- 1500 # define width
dy <- 1400 # define height
C <- complex(real = rep(seq(-2.2, 1.0, length.out = dx), each = dy),
imag = rep(seq(-1.2, 1.2, length.out = dy), dx))
C <- matrix(C, dy, dx) # reshape as square matrix of complex numbers
Z <- 0 # initialize Z to zero
X <- array(0, c(dy, dx, 20)) # initialize output 3D array
for (k in 1:20) { # loop with 20 iterations
Z <- Z^2 + C # the central difference equation
X[, , k] <- exp(-abs(Z)) # capture results
}
write.gif(X, "Mandelbrot.gif", col = jet.colors, delay = 100)
Kritiikkiä
[muokkaa | muokkaa wikitekstiä]R:n heikkoina kohtina pidetään tietoturvaa, muistinhallintaa ja suorituksen hitautta.[9][10] Esimerkiksi GIS:issä rasterietäisyyden laskemiseen käytettävä distance() on hidas, jos vertaa GIS-ohjelmaan. Muistinhallintaa sanotaan huonoksi ja hitaaksi. Kieltä sanotaan aloittelijalle vaikeaksi ja siinä on jyrkkä oppimiskäyrä.[11] R:n kehittyessä kaikkia paketteja ei päivitetä. Ohjelmapakettien avusteet voivat olla puutteellisia.[12]
Lähteet
[muokkaa | muokkaa wikitekstiä]- Adler, Joseph: R in a Nutshell. (Second Edition) O'Reilly, 2012. ISBN 978-1-449-31208-4
Viitteet
[muokkaa | muokkaa wikitekstiä]- ↑ (en) R 4.4.1 is released, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ a b c d What is R? r-project.org. Viitattu 25.9.2019. (englanniksi)
- ↑ a b c d e f g h Adler, Joseph: R in a Nutshell. (Second Edition) O'Reilly, 2012. ISBN 978-1-449-31208-4
- ↑ a b c d e Ashlee Vance: Data Analysts Captivated by R’s Power 6.1.2009. The New York Times. Viitattu 26.9.2019. (englanniksi)
- ↑ Sharon Machlis: Beginner's guide to R: Introduction 18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi)
- ↑ a b Ihaka, Ross: R : Past and Future History A Draft of a Paper for Interface '98. Viitattu 16.2.2015.
- ↑ Dalgaard, Peter: R 4.2.1 is released The R-announce mailing list. 23.6.2022. Viitattu 24.9.2022. (englanniksi)
- ↑ Sharon Machlis: Beginner's guide to R: Introduction (sivu 3) 18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi)
- ↑ Community Manager: Pros and Cons of R Language IIHT. 19.4.2019. Viitattu 25.11.2019. (englanti)[vanhentunut linkki]
- ↑ Paul Krill: Why R? The pros and cons of the R language InfoWorld. 30.6.2015. Viitattu 25.11.2019. (englanniksi)
- ↑ DataFlair Team: Pros and Cons of R Programming Language - Unveil the Essential Aspects! DataFlair. 16.7.2019. Viitattu 25.11.2019. (englanti)
- ↑ Pros and Cons of R mjwebster.github.io. Viitattu 25.11.2019.
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- R-projektin sivut (englanniksi)
- CRAN (Comprehensive R Archive Network) (englanniksi)
- Jari Oksasen suomenkielinen R-opas (Arkistoitu – Internet Archive)
|