R (programski jezik)

Izvor: Wikipedija
Prijeđi na navigaciju Prijeđi na pretraživanje
Disambig.svg Za druga značenja, pogledajte R.
R
R logo.svg
R terminal.jpg
R korisničko sučelje
Izdavač:R Development Core Team[1]; Ross Ihaka i Robert Gentleman
Platforma:Cross-platform
Vrsta:
Licencija:GNU GPL v2[2]
Web stranica: http://www.r-project.org/

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]

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 | uredi kôd]

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 | uredi kôd]

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 nepromjenjenog 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 | uredi kôd]

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 | uredi kôd]

Osnovna sintaksa[uredi | uredi kôd]

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 | uredi kôd]

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 | uredi kôd]

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 | uredi kôd]

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 | uredi kôd]

Grafičko korisničko sučelje[uredi | uredi kôd]

  • 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 | uredi kôd]

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 | uredi kôd]

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 | uredi kôd]

  1. Hornik, Kurt (26. studenoga 2015.). "R FAQ". 2.1 What is R?. https://cran.r-project.org/doc/FAQ/R-FAQ.html#What-is-R_003f Pristupljeno 5. kolovoza 2018. 
  2. "R license". r-project. https://www.r-project.org/COPYING Pristupljeno 5. kolovoza 2018. 
  3. "Robert Gentleman's home page". http://gentleman.fhcrc.org/ Pristupljeno 20. 7. 2009. 
  4. 4,0 4,1 Fox, John and Andersen, Robert (January 2005). Using the R Statistical Computing Environment to Teach Social Statistics CoursesUsing the R Statistical Computing Environment to Teach Social Statistics Courses ([PDF]), Department of Sociology, McMaster University. pristupljeno 3. 8. 2006..
  5. Vance, Ashlee (6. 1. 2009.). "Data Analysts Captivated by R's Power". New York Times. http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html Pristupljeno 28. 4. 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?". http://www.r-project.org/about.html Pristupljeno 28. 4. 2009. 
  7. https://www.r-project.org/about.html Pristupljeno 04.02.2020.
  8. Thieme, Nick (1. kolovoza 2018.). "R generation" (engl.). Significance 15 (4): 14–19. http://doi.wiley.com/10.1111/j.1740-9713.2018.01169.x 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" (engl.). Journal of Statistical Software 40 (8). http://www.jstatsoft.org/v40/i08/ Pristupljeno 4. veljače 2020. 
  12. Jackman, Simon (2003). "R For the Political Methodologist". The Political Methodologist 11 (1): 20–22. http://polmeth.wustl.edu/tpm/tpm_v11_n2.pdf Pristupljeno 3. kolovoza 2006. 
  13. "Speed comparison of various number crunching packages (version 2)". SciView. http://www.sciviews.org/benchmark Pristupljeno 3. 11. 2007. 
  14. "RWeka: An R Interface to Weka. R package version 0.3-17". Kurt Hornik, Achim Zeileis, Torsten Hothorn and Christian Buchta. http://CRAN.R-project.org/package=RWeka Pristupljeno 2009 
  15. Kabacoff, Robert (2012). "Quick-R: User-Defined Functions". http://www.statmethods.net/management/userfunctions.html Pristupljeno 28. rujna 2018. 
  16. "R: Conferences". 1. studenoga 2019.. https://www.r-project.org/conferences/ Pristupljeno 19. studenoga 2019. 

Vanjske poveznice[uredi | uredi kôd]