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

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

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

Historia
--------

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

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

Ohjelmaversio 4.2.1 julkaistiin kesäkuussa 2022.

Kieli
-----

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

Yksinkertainen interaktiivinen käyttötapaus:

```
> 1 + 2 + 3
[1] 6

```

Tulostettava palaute kertoo hakasuluissa indeksin ja sen jälkeen arvon. R-kielessä jokainen konsolissa syötetty arvo tulkitaan vektorina.

Pidempiä vektoreita voidaan syöttää `c()`-funktion (lyhenne sanasta *combine*) kautta:

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

```

Muuttujaan sijoittaminen ja lausekkeen suorittaminen muuttujilla:

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

```

Kieli tukee olio-ohjelmointia.

Ohjelmointiympäristö
--------------------

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.

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
------------

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

```
install.packages("thepackagename")

```

jossa `thepackagename` on asennettavan paketin nimi.

Esimerkkiohjelma
----------------

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)

```

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

Kritiikkiä
----------

R:n heikkoina kohtina pidetään tietoturvaa, muistinhallintaa ja suorituksen hitautta.
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ä. R:n kehittyessä kaikkia paketteja ei päivitetä. Ohjelmapakettien avusteet voivat olla puutteellisia.

Lähteet
-------

* Adler, Joseph: *R in a Nutshell*. O'Reilly, 2012. ISBN 978-1-449-31208-4.

### Viitteet

1. ↑  (en) R 4.3.3 is released, 29. helmikuuta 2024 (viitattu 1. maaliskuuta 2024). Tieto on haettu Wikidatasta.
2. 1 2 3 4  What is R? *r-project.org*. Viitattu 25.9.2019. (englanniksi)
3. 1 2 3 4 5 6 7 8  Adler, Joseph: *R in a Nutshell*. O'Reilly, 2012. ISBN 978-1-449-31208-4.
4. 1 2 3 4 5  Ashlee Vance: Data Analysts Captivated by R’s Power  6.1.2009. The New York Times. Viitattu 26.9.2019. (englanniksi)
5. ↑  Sharon Machlis: Beginner's guide to R: Introduction  18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi)
6. 1 2  Ihaka, Ross: R : Past and Future History *A Draft of a Paper for Interface '98*. Viitattu 16.2.2015.
7. ↑  Dalgaard, Peter: R 4.2.1 is released *The R-announce mailing list*.  23.6.2022. Viitattu 24.9.2022. (englanniksi)
8. ↑  Sharon Machlis: Beginner's guide to R: Introduction (sivu 3)  18.8.2017. Computerworld. Viitattu 26.9.2019. (englanniksi)
9. ↑  Community Manager: Pros and Cons of R Language *IIHT*.  19.4.2019. Viitattu 25.11.2019. (englanniksi)[vanhentunut linkki]
10. ↑  Paul Krill: Why R? The pros and cons of the R language *InfoWorld*.  30.6.2015. Viitattu 25.11.2019. (englanniksi)
11. ↑  DataFlair Team: Pros and Cons of R Programming Language - Unveil the Essential Aspects! *DataFlair*.  16.7.2019. Viitattu 25.11.2019. (englanniksi)
12. ↑  Pros and Cons of R *mjwebster.github.io*. Viitattu 25.11.2019.

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **R (ohjelmointikieli)**.
* R-projektin sivut (englanniksi)
* CRAN (Comprehensive R Archive Network) (englanniksi)
* Jari Oksasen suomenkielinen R-opas (Arkistoitu – Internet Archive)

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Yleisimmät ohjelmointikielet |
| --- |
|  |
| Tuotantokäytössä | 
* Ada
* APL
* Assembly
* AWK
* C
* C++
* C#
* COBOL
* Dart
* Delphi
* Eiffel
* Erlang
* Forth
* Fortran
* Go
* Java
* JavaScript
* Kotlin
* Lisp
* Lua
* Objective-C
* Pascal
* Perl
* PHP
* PostScript
* Python
* R
* Ruby
* Rust
* Smalltalk
* Swift
* Tcl
* TypeScript
* Visual Basic

 |
|  |
| Akateemiset | 
* CLU
* Haskell
* Logo
* ML
* OCaml
* Prolog
* Scheme

 |
|  |
| Historialliset | 
* ALGOL
* BASIC
* Modula-3
* MUMPS
* Plankalkül
* PL/I
* Simula

 |
|  |
| Luettelo yleisimmistä ohjelmointikielistä |

 |