R (programski jezik)

programski jezik
Za druga značenja pogledajte R.

R je programski jezik i programsko okruženje za statističke izračune i grafikone. R je izvedba S programskog jezika inspirirana Scheme-om. Originalni tvorci R-a su Ross Ihaka i Robert Gentleman[3] sa sveučilišta Auckland na Novom Zelandu, a sada ga razvija R Development Core Team.[4]

R
R korisničko sučelje
IzdavačR Development Core Team;[1] Ross Ihaka i Robert Gentleman
Datum izdavanja1993.
PlatformaCross-platform
LicencijaGNU GPL v2[2]
Internetska
stranica
http://www.r-project.org/

Jezik R postao je standard među statističarima i široko se koristi za razvoj statističkog softvera i analizu podataka.[4][5]

R je dio GNU projekta.[6] Izvorni je kod besplatan i pod uvjetima GNU General Public Licence, a unaprijed sastavljene binarne verzije nude se za različite operativne sustave. R koristi sučelje naredbenog retka, ali postoji i više grafičkih korisničkih sučelja.

Povijest

uredi

R je implementacija programskog jezika S nadahnuta programskim jezikom Scheme. S je razvio John Chambers 1976. godine za vrijeme rada u Bell Labs. Postoje razlike između dva prethodno spomenuta programska jezika, međutim velik dio koda napisanog za "S" stoji nepromijenjen.[7] R su razvili Ross Ihaka i Robert Gentleman sa Sveučilišta Auckland na Novom Zelandu, a trenutno ga nadograđuje i razvija R Development Core Team.[8] R je dobio ime po dvojici izvornih autora, a dijelom i kao igra riječi, jer je S naziv programskog jezika na temelju kojeg je nastao R. Projekt je započeo 1992. godine, prva verzija objavljena je 1995. godine, a stabilna beta verzija 2000.[9][10][11]

Značajke

uredi

R pruža širok raspon statističkih (linearni i nelinearni modeli, klasični statistički testovi, analiza vremenskih serija, klasifikacije, klasteri, itd.) i grafičkih tehnika. R je dizajniran kao pravi programski jezik, a korisnicima omogućuje dodatne funkcije definiranjem novih funkcija. Postoji nekoliko važnih razlika, ali R može koristiti velik dio nepromijenjenog S koda. Većina R-ovog sustava također je napisana na ovom jeziku, što korisnicima olakšava oblikovanje algoritama. Za zahtjevne zadatke mogu se povezati i pokrenuti C, C ++ i Fortran kod. Napredni korisnici mogu napisati C kôd za izravno upravljanje R objektima.

R se može proširiti putem korisničkih paketa koji omogućuju upotrebu specijaliziranih statističkih alata. Budući da je inspiriran S-om, R ima bolju podršku za objektno orijentirano programiranje od ostalih statističkih programskih jezika. Proširivost R-a također je olakšana jezičnim rasponom.[12]

Još jedna prednost Ra-a su njegove grafičke mogućnosti, koje pružaju grafiku dovoljno dobre kvalitete za objavljivanje u publikacijama koja uključuje matematičke simbole. R ima vlastiti format dokumenta poput LaTeX- a, koji se koristi za predstavljanje sveobuhvatne dokumentacije, putem Interneta u brojnim formatima ili u tiskanom obliku.

Osim kao okruženje za statističke izračune i razvoj softvera, R se također može koristiti kao općeniti alat za izračunavanje matrica izvedbe usporedive s GNU Octave i MATLAB-om.[13] Sučelje RWeka dodano je popularnom Weka softveru za rudarenje podataka koji omogućuje mogućnost pisanja i čitanja u arff formatu.[14]

R paketi

uredi

Mogućnosti R-a proširuju se pomoću takozvanih paketa koje izrađuju i objavljuju korisnici, a koji omogućuju upotrebu specijaliziranih statističkih alata, alata za grafički prikaz (npr. Ggplot2), alate za uvoz / izvoz podataka, za izradu izvješća (knitr, Sweave) itd. Ovi su paketi razvijeni prvenstveno u R-u, ali ponekad se u razvoju koriste i Java, C ili Fortran.

Primjeri

uredi

Osnovna sintaksa

uredi

Sljedeći primjer prikazuje osnovnu sintaksu i upotrebu naredbenog retka.

Prilikom unosa koda poželjno je koristiti strelice sastavljene od dva znaka <-, ali je moguće koristiti i znakove jednakosti =.

> x <- 1:6 # Create a numeric vector in the current environment
> y <- x^2 # Create vector based on the values in x.
> print(y) # Print the vector’s contents.
[1] 1 4 9 16 25 36

> z <- x + y # Create a new vector that is the sum of x and y
> z # return the contents of z to the current environment.
[1] 2 6 12 20 30 42

> z_matrix <- matrix(z, nrow=3) # Create a new matrix that turns the vector z into a 3x2 matrix object
> z_matrix 
     [,1] [,2]
[1,]    2 20
[2,]    6 30
[3,]   12 42

> 2*t(z_matrix)-2 # Transpose the matrix, multiple every element by 2, subtract 2 from each element in the matrix, and return the results to the terminal.
     [,1] [,2] [,3]
[1,]    2 10 22
[2,]   38 58 82

> new_df <- data.frame(t(z_matrix), row.names=c('A','B')) # Create a new data.frame object that contains the data from a transposed z_matrix, with row names 'A' and 'B'
> names(new_df) <- c('X','Y','Z') # set the column names of new_df as X, Y, and Z.
> print(new_df)  #print the current results.
   X Y Z
A 2 6 12
B 20 30 42

> new_df$Z #output the Z column
[1] 12 42

> new_df$Z==new_df['Z'] && new_df[3]==new_df$Z # the data.frame column Z can be accessed using $Z, ['Z'], or [3] syntax, and the values are the same. 
[1] TRUE

> attributes(new_df) #print attributes information about the new_df object
$names
[1] "X" "Y" "Z"

$row.names
[1] "A" "B"

$class
[1] "data.frame"

> attributes(new_df)$row.names <- c('one','two') ## access and then change the row.names attribute; can also be done using rownames()
> new_df
     X Y Z
one 2 6 12
two 20 30 42

Funkcije

uredi

Jedna od prednosti R-a je lakoća stvaranja novih funkcija. Objekti ostaju lokalni za funkciju i mogu se vratiti u bilo koji tip podataka.[15]

# Declare function “f” with parameters “x”, “y“
# that returns a linear combination of x and y.
f <- function(x, y) {
  z <- 3 * x + 4 * y
  return(z) # the return() function is optional here
}
> f(1, 2)
[1] 11

> f(c(1,2,3), c(5,3,4))
[1] 23 18 25

> f(1:3, 4)
[1] 19 22 25

Modeliranje i grafički prikazi

uredi

R ima ugrađenu podršku za modeliranje podataka i grafiku. Sljedeći primjer prikazuje kako R može lako generirati i iscrtati linearni model.

 
Dijagnostički grafovi izrađeni pomoću funkcije plot.lm ().
> x <- 1:6 # Create x and y values
> y <- x^2  
> model <- lm(y ~ x)  # Linear regression model y = A + B * x.
> summary(model)  # Display an in-depth summary of the model.

Call:
lm(formula = y ~ x)

Residuals:
      1 2 3 4 5 6
 3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  -9.3333 2.8441  -3.282 0.030453 * 
x 7.0000 0.7303 9.585 0.000662 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.055 on 4 degrees of freedom
Multiple R-squared:  0.9583, Adjusted R-squared:  0.9478
F-statistic: 91.88 on 1 and 4 DF,  p-value: 0.000662

> par(mfrow = c(2, 2))  # Create a 2 by 2 layout for figures.
> plot(model)  # Output diagnostic plots of the model.

Mandelbrotov skup

uredi

Sljedeći primjer prikazuje R kod koji izračunava Mandelbrotov skup kroz prvih 20 ponavljanja jednadžbe z = z2 + c za različite konstante c.

Osim toga, ovaj primjer prikazuje:

  • korištenje vanjskih knjižnica koje su razvile zajednice (zvane paketi), u ovom slučaju caTools paket
  • višedimenzionalne nizove brojeva koji se koriste kao osnovni tip podataka, pogledajte varijable C, Z i X.
 
Grafički prikaz primjera Mandelbrotovog skupa kreiranog u R-u.
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)

Sučelje

uredi

Grafičko korisničko sučelje

uredi
  • RKWard - proširivo grafičko korisničko sučelje i integrirano razvojno okruženje okruženje za R.
  • RStudio - međuplatformsko integrirano razvojno okruženje otvorenog koda (također se može pokrenuti na Linux poslužitelju).
  • Deducer - grafičko korisničko sučelje za analizu podataka (slično SPSS / JMP / Minitab).
  • Java GUI for R - Nezavisni R terminal i uređivač koji se temelji na Javi (poznat i kao JGR).
  • Rattle GUI - cross-platform grafičko korisničko sučelje otvorenog koda zasnovano na RGtk2 (R za Gimp Tool Kit).
  • R Commander - višeplatformsko grafičko korisničko sučelje zasnovano na tcltk.
  • RExcel - povezivanje aplikacije Microsoft Excel s programskim jezikom R.
  • RGUI - dolazi s prekompajliranom verzijom R-a za Microsoft Windows.
  • RWe - omogućuje rudarenje podataka pomoću Weka i statističku analizu u R-u.
  • Tinn-R - program otvorenog koda koji uključuje razvojno okruženje s isticanjem sintakse, slično, na primjer MATLAB-u. Tinn-R dostupan je samo za Microsoft Windows.
  • R Tools for Visual Studio - dodatak za Microsoft Visual Studio, koji omogućuje upotrebu R jezika.

Jezici skriptiranja

uredi

R funkcije su dostupne u nekoliko skriptnih jezika kao što su Python (RPY paket), Perl (Statistics::R modul), Ruby (RSRuby knjižnica) i F # (R Type Provider). Skriptiranje je moguće i putem Littlera te RDEMO-a.

useR! konferencije

uredi

Službeno godišnje okupljanje korisnika R naziva se "useR!". Prva takva konferencija održana je u Austriji u svibnju 2004. godine. Konferencija nije održana 2005. godine, ali se zato održaval svake naredne godine, obično naizmjenično između lokacija u Europi i Sjevernoj Americi. Lista održanih konferencija:[16]

  • useR! 2006., Beč, Austrija
  • useR! 2007., Ames, Iowa, SAD
  • useR! 2008., Dortmund, Njemačka
  • useR! 2009., Rennes, Francuska
  • useR! 2010., Gaithersburg, Maryland, SAD
  • useR! 2011., Coventry, Ujedinjeno Kraljevstvo
  • useR! 2012., Nashville, Tennessee, SAD
  • useR! 2013., Albacete, Španjolska
  • useR! 2014., Los Angeles, Kalifornija, SAD
  • useR! 2015., Aalborg, Danska
  • useR! 2016., Stanford, Kalifornija, SAD
  • useR! 2017., Bruxelles, Belgija
  • useR! 2018., Brisbane, Australija
  • useR! 2019., Toulouse, Francuska
  • useR! 2020., St. Louis, Missouri, SAD (održano online zbog pandemije COVID-19)

Izvori

uredi
  1. Hornik, Kurt. 26. studenoga 2015. R FAQ. The Comprehensive R Archive Network. 2.1 What is R?. Pristupljeno 5. kolovoza 2018.
  2. R license. r-project. Pristupljeno 5. kolovoza 2018.
  3. Robert Gentleman's home page. Inačica izvorne stranice arhivirana 23. lipnja 2006. Pristupljeno 20. srpnja 2009.
  4. a b Fox, John and Andersen, Robert. Siječanj 2005. Using the R Statistical Computing Environment to Teach Social Statistics Courses (PDF) (disertacija). Department of Sociology, McMaster University. Inačica izvorne stranice ([PDF]) arhivirana 11. lipnja 2016. Pristupljeno 3. kolovoza 2006.CS1 održavanje: više imena: authors list (link)
  5. Vance, Ashlee. 6. siječnja 2009. Data Analysts Captivated by R's Power. New York Times. Pristupljeno 28. travnja 2009.. R is also the name of a popular programming language used by a growing number of data analysts inside corporations and academia. It is becoming their lingua franca...
  6. What is R?. Pristupljeno 28. travnja 2009.
  7. https://www.r-project.org/about.html Pristupljeno 04.02.2020.
  8. Thieme, Nick. Kolovoz 2018. R generation. Significance (engleski). 15 (4): 14–19. Pristupljeno 4. veljače 2020.
  9. https://blog.revolutionanalytics.com/2016/03/16-years-of-r-history.html Pristupljeno 04.02.2020.
  10. https://www.stat.auckland.ac.nz/~ihaka/downloads/Massey.pdf Pristupljeno 04.02.2020.
  11. Eddelbuettel, Dirk. 2011. Rcpp : Seamless R and C++ Integration. Journal of Statistical Software (engleski). 40 (8). Pristupljeno 4. veljače 2020.
  12. Jackman, Simon. 2003. R For the Political Methodologist (PDF). The Political Methodologist. 11 (1): 20–22. Inačica izvorne stranice (PDF) arhivirana 21. srpnja 2006. Pristupljeno 17. siječnja 2021.
  13. Speed comparison of various number crunching packages (version 2). SciView. Inačica izvorne stranice arhivirana 8. kolovoza 2009. Pristupljeno 3. studenoga 2007.
  14. RWeka: An R Interface to Weka. R package version 0.3-17. Kurt Hornik, Achim Zeileis, Torsten Hothorn and Christian Buchta. Pristupljeno 2009 Provjerite vrijednost datuma u parametru: |accessdate= (pomoć)
  15. Kabacoff, Robert. 2012. Quick-R: User-Defined Functions. statmethods.net. Pristupljeno 28. rujna 2018.
  16. R: Conferences. r-project.org. 1. studenoga 2019. Pristupljeno 19. studenoga 2019.

Vanjske poveznice

uredi