1. Packages and related projects
1.1. Additional Packages
1.1.1. Unit Test
1.1.1.1. RUnit
1.1.1.2. svUnit
1.1.2. Documentation
1.1.2.1. ROxygen
1.1.2.1.1. DOxygen like documentation system
1.1.2.2. Lyx ?
1.1.2.3. odfWeave
1.1.2.4. sweave
1.1.2.4.1. R code in LaTeX documents
1.1.3. GUIs
1.1.3.1. Rattle (R GUI for data-mining)
1.1.3.2. JGR
1.1.3.2.1. R console in Java
1.1.4. Graphics
1.1.4.1. grid
1.1.4.1.1. low level graphic system (line, box, text)
1.1.4.1.2. graph annotations
1.1.4.1.3. unusual graphic representation
1.1.4.2. lattice
1.1.4.2.1. multiple graphics on the same viewport
1.1.4.2.2. automatic generation on layout based on partition fields
1.1.4.3. zoo
1.1.4.3.1. irregular time series management
1.1.4.3.2. http://r-forge.r-project.org/projects/zoo/
1.1.4.3.3. http://cran.r-project.org/web/packages/zoo/zoo.pdf
1.1.4.4. ggplot2
1.1.4.4.1. plotting system for R, based on the grammar of graphics
1.1.4.4.2. http://cran.r-project.org/web/packages/ggplot2/index.html
1.1.4.4.3. http://had.co.nz/ggplot2/
1.1.5. Statistics
1.1.5.1. vcd
1.1.5.1.1. Multidimentional data manipulation (treemaps)
1.2. Integration
1.2.1. With other tools
1.2.1.1. RGGobi
1.2.1.1.1. integration with GGobi : statistical data grapher
1.2.1.2. RWeka
1.2.1.2.1. integration with Weka (data-mining tool)
1.2.2. Text Editors
1.2.2.1. Eclipse plugin StatET
1.2.2.1.1. A guide to Eclipse and StatET
1.2.2.2. Emacs ESS
1.2.2.3. Tinn-R : dedicated editor
1.2.3. Scripting
1.2.3.1. Python : rpy
1.2.3.2. RScript
1.2.3.3. littler
1.2.4. Other langages
1.2.4.1. native support of C
1.2.4.2. rJava
1.2.4.2.1. Use R code from Java code
1.2.4.2.2. connect to the R server through RMI
1.2.4.3. JavaGD
1.2.4.3.1. Use R graphic functions from Java classes
1.3. Based on R
1.3.1. Yeroon : web-based graphics application
2. Get started!
2.1. Download R
2.1.1. download the precompiled binary distribution of R
2.1.2. Go to the R web site http://www.r-project.org, select a CRAN mirror site and download the base distribution
2.2. Start a R session
2.2.1. Start the R system, the main window (RGui) with a sub window (R Console) will appear
2.2.2. In the `Console' window the cursor is waiting for you to type in some R commands
2.2.3. For example, use R as a simple calculator : 1 + sin(3)
2.3. Learn R
2.3.1. Getting Started
2.3.2. R Basics
2.3.3. An introduction to R
2.3.4. R by example
2.3.5. Simples graphs
2.3.6. R Help Center
2.3.7. Histograms and lattice
2.4. More on R
2.4.1. Basic drawing with grid
2.4.2. Frames, environments and scopes
2.4.3. Quick R
2.4.3.1. for people who are experienced users of other stat packages like SAS, SPSS, Stata, and Systat
2.4.4. S3 classes and methods
2.4.5. Writing functions in R
2.4.6. Colors
2.4.7. R for programmers
2.4.8. Introduction to HighPerformance R
2.4.9. Time Series
2.5. Other
2.5.1. Reference Card
2.5.2. Function Finder
2.5.3. Jonathan Baron's R Help page
2.5.4. R Help
3. Features
3.1. De facto standard among statisticians for the development of statistical software and data analysis tools
3.2. Benefits
3.2.1. an effective data handling and storage facility, ...
3.2.2. a suite of operators for calculations on arrays, in particular matrices, ...
3.2.3. a large, coherent, integrated collection of intermediate tools for data analysis, ...
3.2.4. graphical facilities for data analysis and display either on-screen or on hardcopy, and ...
3.2.5. a well-developed, simple and effective programming language which includes conditionals, loops, user-defined recursive functions and input and output facilities.
3.3. Domains
3.3.1. finance
3.3.2. human genome
3.3.3. environment
3.3.4. social media
3.4. R Graph samples
3.4.1. *
3.4.1.1. R graphic
3.4.1.2. R graphic
3.4.2. *
3.4.2.1. *
3.4.2.1.1. R Graphic
3.4.2.1.2. R Graphic
3.4.2.2. R graphic
4. Origins
4.1. Open Source implementation of S
4.1.1. S
4.1.1.1. Statistical computing language
4.1.1.2. Graphival Capabilities
4.1.1.3. Created at Bell Labs
4.1.1.4. Commercial
4.1.2. History of S
4.1.2.1. Old S : 1975-1984
4.1.2.1.1. Implemented in Fortran
4.1.2.1.2. Macros
4.1.2.2. S3 : 1988-1991
4.1.2.2.1. Reimplemented in C
4.1.2.2.2. Functions
4.1.2.2.3. Informal classes and methods
4.1.2.3. S4 : 1998-
4.1.2.3.1. Advanced object-oriented features
4.1.2.3.2. Interfaces with Java, Corba ...
4.1.2.4. S-Plus 5 : 2000
4.2. Additions from Scheme
4.2.1. lexical scoping
4.2.2. one a the Lisp dialects
4.2.2.1. Garbage Collection
4.2.2.2. First class Functions
4.2.2.3. Dynamic Typing
4.2.2.4. Homoiconicity
4.2.2.4.1. primary representation of programs is also a data structure in a primitive type of the language itself
4.3. created at the University of Auckland, New Zealand,
4.3.1. by Ross Ihaka
4.3.2. by Robert Gentleman
4.3.3. Starting 1975
4.3.4. involving John Chambers, Rick Becker, Doug Dunn, Paul Tukey, and Graham Wilkinson
5. EcoSystem
5.1. R Project
5.1.1. Developed by the R Development Core Team
5.1.1.1. is part of the GNU project
5.1.1.2. under the GNU General Public License
5.1.2. R Foundation for Statistical Computing, Vienna, Austria.
5.1.3. ISBN 3-900051-07-0
5.1.4. Web site : http://www.R-project.org
5.2. Package repositories
5.2.1. Comprehensive R Archive Network (CRAN)
5.2.1.1. CRAN is a network of ftp and web servers around the world that store identical, up-to-date, versions of code and documentation for R
5.2.2. R-Forge
5.2.2.1. central platform for the development of R packages and R-related software
5.2.2.2. hosts many unpublished, beta packages and development versions of CRAN packages.
5.2.3. Crantastic
5.2.3.1. community site for rating and reviewing all CRAN packages
5.2.4. CRANberries
5.2.4.1. new and updates packages
5.2.5. Other repositories
5.2.5.1. Omega
5.3. Search Engines
5.3.1. R Site Search
5.3.2. RSeek
5.3.3. Task Views page
5.3.3.1. Summarizes packages that are especially useful for selected topics
5.3.4. Dan Goldstein's search page
5.3.4.1. Goocle custom search and Rollyo
5.4. News and documentation
5.4.1. R Manuals
5.4.2. R Wiki
5.4.3. R Journal
5.4.3.1. The R Journal is the refereed journal of the R project for statistical computing.
5.4.4. R Developer Page
5.4.5. R on Wikipedia
5.5. Forums and code databases
5.5.1. R Graph Gallery
5.5.2. R Graphical Manual
5.5.3. R Mailing list Archive
5.5.4. R forum on Nabble
5.5.5. R on Stackoverflow
5.6. Blogs
5.6.1. Planet R
5.6.1.1. Blog aggregator
5.6.2. R Cookbook
5.7. Conferences
5.7.1. useR! 2010
5.7.2. useR! 2009
5.8. Commercialized versions
5.8.1. REvolution
5.8.2. R+
5.8.3. RStat
5.9. as a PageFlake
6. What is R ?
6.1. R is a programming language ...
6.1.1. Functional programming
6.1.1.1. treats computation as the evaluation of mathematical functions
6.1.1.2. avoids state and mutable data.
6.1.1.3. functions can't have side effects
6.1.2. Lexical scoping
6.1.2.1. a variable always refers to its top-level environment
6.1.2.2. allows to reason as if variable bindings were carried out by substitution
6.1.2.3. it requires each function value to carry with it a record of the values of the variables that it depends on
6.1.2.3.1. closure
6.1.2.4. the location of each value is known at compile time.
6.1.3. Extensibility
6.1.3.1. add additional functionality by defining new R functions.
6.1.3.2. can be extended via packages
6.1.3.2.1. Package repository
6.1.3.2.2. User-submitted packages
6.1.3.2.3. 1,600 different packages
6.1.3.3. Advanced users can write C code to manipulate R objects directly
6.1.4. Vectorization of all data
6.1.4.1. Easy manipulation of vectors, matrices and data table
6.1.4.1.1. Mathematical calculations on vectors
6.1.4.1.2. Concatenation and set operations
6.1.4.1.3. Summary outputs the basic statistics for any kind of data structure
6.1.4.1.4. Map (apply), Reduce, Filter ...
6.1.4.1.5. names lines and columns
6.1.4.2. Data Types
6.1.4.2.1. Double
6.1.4.2.2. Integer
6.1.4.2.3. Complex
6.1.4.2.4. Logical
6.1.4.2.5. Character
6.1.4.2.6. Factor
6.1.4.2.7. Dates and times
6.1.4.2.8. Missing data and Infinite values
6.1.5. Homoiconicity
6.1.5.1. primary representation of programs is also a data structure in a primitive type of the language itself
6.1.6. Object oriented
6.1.6.1. S3 ECMA style classes (prototypes)
6.1.6.2. S4 advanced object oriented support
6.1.6.3. Classes are used for inheritance and to maintain object state
6.1.7. Garbage Collector
6.1.8. Data Structures
6.1.8.1. Vector
6.1.8.1.1. object that consists of a number of elements of the same type
6.1.8.1.2. type is dynamically evaluated
6.1.8.2. Matrix
6.1.8.2.1. matrix can be regarded as a generalization of a vector
6.1.8.3. Array
6.1.8.3.1. Arrays are generalizations of vectors and matrices.
6.1.8.3.2. A vector is a one-dimensional array and a matrix is a two dimensional array
6.1.8.4. DataFrame
6.1.8.4.1. Data frames can be regarded as an extension to matrices.
6.1.8.4.2. Data frames can have columns of different data types and are the most convenient data structure for data analysis in R
6.1.8.5. Time-Series
6.1.8.5.1. combines two components: - The data, a vector or matrix of numeric value - The dates of the data, the dates are equispaced points in time (regular tie series)
6.1.8.5.2. A package provides functions to deal with irregular time series (monitoring data for instance)
6.1.8.6. List
6.1.8.6.1. A list is like a vector. However, an element of a list can be an object of any type and structure
6.1.8.6.2. A list can contain another list and therefore it can be used to construct arbitrary data structures
6.2. ... and a software environment ...
6.2.1. Command Line Interface
6.2.1.1. Run programs stored in script files
6.2.2. Graphical User Interface
6.2.2.1. R console RGUI
6.2.2.2. Interactive shell
6.2.2.3. View data
6.2.2.4. View graphics
6.2.3. CrossPlatform
6.2.3.1. Windows
6.2.3.2. Unix/Linux
6.2.3.3. Mac OS
6.2.4. Fully planned and coherent system
6.2.4.1. Packages
6.2.4.1.1. standardized units for extending R
6.2.4.1.2. Package metadata : title, author, description, dependencies ...
6.2.4.1.3. Standardized package structure
6.2.4.1.4. easy to install through the CRAN repository
6.2.4.2. Name Spaces
6.2.4.3. Source Forge
6.2.4.4. Qualification Tests
6.2.4.4.1. Standardized check through R CMD check
6.2.4.4.2. Code and documentation check
6.2.4.5. Documentation
6.2.4.5.1. Package's vignettes
6.2.4.5.2. Online documentation
6.3. ... for statistical computing
6.3.1. domain specific language
6.3.1.1. statistical computing
6.3.1.1.1. classification, clustering
6.3.1.1.2. time-series analysis
6.3.1.1.3. classical statistical tests
6.3.1.1.4. linear and nonlinear modeling
6.3.1.2. graphics
6.3.1.2.1. On Screen and Printable
6.3.1.2.2. LaTeX-like documents
6.3.1.2.3. mathematical symbols
6.3.1.2.4. High Quality plots