R (ohjelmointikieli)

Wikipediasta
Siirry navigaatioon Siirry hakuun
R
R logo.svg
Kehittäjä Ross Ihaka, Robert Gentleman
Vaikutteet S, Scheme
Verkkosivu https://www.r-project.org

R on ohjelmointikieli ja ohjelmointiympäristö tilastolliseen laskentaan ja grafiikan tuottamiseen.[1] R on GNU-projekti, joka on samankaltainen kuin Bell Labsilla kehitetty S-kieli ja sen ympäristö.[1]

R-kielellä voi tehdä muutamalla rivillä asioita, jotka vaatisivat tunteja taulukkolaskentaohjelmalla tai sivuittain Java-koodia.[2] R ei kuitenkaan sovellu monimutkaisiin tietorakenteisiin, tehokkaseen tiedon kyselyyn tai työskentelyyn tietojoukoilla, jotka eivät mahdu tietokoneen muistiin.[2]

Kieltä käytetään data-analyysiin akateemisessa maailmassa ja suurissa yrityksissä.[3] Kielestä sanotaan tulleen lingua franca tiedonlouhinnan edettyä kulta-ajalle.[3] Kielen sanotaan saaneen seuraajia koska tilastotieteilijät, insinöörit ja tieteilijät joilla ei ole ohjelmointiosaamista kokevat sen helpoksi käyttää.[3] Kieleen on julkaistu vuoteen 2017 mennessä yli 10 000 laajennuspakettia.[4]

R:n rasitteina pidetään usein muun muassa puuttuvaa tietoturvaa, huonoa muistinhallintaa ja ajon hitautta[5][6].

Historia[muokkaa | muokkaa wikitekstiä]

Kielen ovat kehittäneet Aucklandin yliopistossa Uudessa-Seelannissa Ross Ihaka ja Robert Gentleman.[3][7] R-ohjelmointikielessä on vaikutteita John Chambersin kehittämästä S-kielestä, sekä Scheme-kielestä.[7]

Tekijät julkaisivat R:n avoimena lähdekoodina ja se on vapaasti saatavissa GNU GPL -lisenssin alla.[3][1]

Kieli[muokkaa | muokkaa wikitekstiä]

Kieli on suunniteltu aidon ohjelmointikielen ympärille ja se mahdollistaa laajentamisen uusien funktioiden lisäämisellä.[1]

Yksinkertainen interaktiivinen käyttötapaus:[2]

> 1 + 2 + 3
[1] 6

.. jossa tulostettava palaute kertoo hakasuluissa indeksin ja sen jälkeen arvon. R-kielessä jokainen konsolissa syötetty arvo tulkitaan vektorina.[2]

Pidempiä vektoreita voidaan syöttää c() (lyhenne sanoista combine) -funktion kautta:[2]

> c(0, 1, 1, 2, 3, 5, 8)
[1] 0 1 1 2 3 5 8

Muuttujaan sijoittaminen ja lausekkeen suorittaminen muuttujilla:[2]

> x <- 1
> y <- 2
> z <- c(x,y) 
> z
[1] 1 2

Kieli tukee olio-ohjelmointia.[2]

Ohjelmointiympäristö[muokkaa | muokkaa wikitekstiä]

Kielen ohjelmointiympäristöstöstä on saatavilla useita versiota: sitä voidaan käyttää komentoriviltä, graafisen käyttöliittymän kautta tai laajennuksena muihin sovelluksiin kuten Emacsiin.[2]

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:[8]

install.packages("thepackagename")

.. jossa thepackagename on asennettavan paketin nimi.

Ohjelmaversio 3.5.2. julkaistiin joulukuussa 2018.[9]


Esimerkkiohjelma[muokkaa | muokkaa wikitekstiä]

Alla oleva R-kielinen ohjelma tekee Mandelbrotin joukkoa kuvaavan GIF-animaation.[10]

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)

"Mandelbrot.gif" – graphics created in R with 14 lines of code in Example 2

Kritiikkiä[muokkaa | muokkaa wikitekstiä]

R-kielen suurimmat rasitteet lienevät ohjelmakirjastojen ajon hitaus ja puuttellinen tietoturva. Esimerkikiksi GIS:issä rasterietäisyyden laskemiseen käytettävä distance() on todella hidas, jos vertaa GIS-ohjelmaan. Muistinhallinta on huonoa ja hidasta. Kieli on aloittelijalle vaikea, ja osin vanhanaikainenkin[11]. Isojen ohjelmien ylläpidettävyys on ongelmallista[12]. Verrattune Exceliin kaavion piirto vaatii enemmän työtä. R:n kehittyessä kaikkia paketteja ei päivitetä. Ohjelmapakettien avusteet voivat olla puutteellisia[13].

Lähteet[muokkaa | muokkaa wikitekstiä]

Viitteet[muokkaa | muokkaa wikitekstiä]

  1. a b c d What is R? r-project.org. Viitattu 25.9.2019. (englanniksi)
  2. a b c d e f g h Adler, Joseph: R in a Nutshell. O'Reilly, 2012. ISBN 978-1-449-31208-4.
  3. 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) 
  4. Sharon Machlis: Beginner's guide to R: Introduction 18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi) 
  5. Community Manager: Pros and Cons of R Language IIHT. 19.4.2019. Viitattu 25.11.2019. (englanniksi)
  6. Paul Krill: Why R? The pros and cons of the R language InfoWorld. 30.6.2015. Viitattu 25.11.2019. (englanniksi)
  7. a b Ihaka, Ross: R : Past and Future History A Draft of a Paper for Interface '98. Viitattu 16.2.2015.
  8. Sharon Machlis: Beginner's guide to R: Introduction (sivu 3) 18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi) 
  9. The R Project for Statistical Computing r-project.org. Viitattu 5.12.2018.
  10. Käännös suomeksi
    Tämä artikkeli tai sen osa on käännetty tai siihen on haettu tietoja muunkielisen Wikipedian artikkelista.
    Alkuperäinen artikkeli: [[[1]]]
  11. DataFlair Team: Pros and Cons of R Programming Language - Unveil the Essential Aspects! DataFlair. 16.7.2019. Viitattu 25.11.2019. (englanniksi)
  12. What are disadvantages of R Programming? - Quora www.quora.com. Viitattu 25.11.2019.
  13. Pros and Cons of R mjwebster.github.io. Viitattu 25.11.2019.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]