R free download for Mac


01 May 2019

Statistical computing and graphics.


R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R.

R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.

One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.

What's new in R

Version 3.6.0:
  • Serialization format version 3 becomes the default for serialization and saving of the workspace (save(), serialize(), saveRDS(), compiler::cmpfile()). Serialized data in format 3 cannot be read by versions of R prior to version 3.5.0. Serialization format version 2 is still supported and can be selected by version = 2 in the save/serialization functions. The default can be changed back for the whole R session by setting environment variables R_DEFAULT_SAVE_VERSION and R_DEFAULT_SERIALIZE_VERSION to 2. For maximal back-compatibility, files ‘vignette.rds’ and ‘partial.rdb’ generated by R CMD build are in serialization format version 2, and resave by default produces files in serialization format version 2 (unless the original is already in format version 3).
  • The default method for generating from a discrete uniform distribution (used in sample(), for instance) has been changed. This addresses the fact, pointed out by Ottoboni and Stark, that the previous method made sample() noticeably non-uniform on large populations. See PR#17494 for a discussion. The previous method can be requested using RNGkind() or RNGversion() if necessary for reproduction of old results. Thanks to Duncan Murdoch for contributing the patch and Gabe Becker for further assistance.
  • The output of RNGkind() has been changed to also return the ‘kind’ used by sample().
New Features:
  • Sys.setFileTime() has been vectorized so arguments path and time of length greater than one are now supported.
  • axis() gets new option gap.axis = NA for specifying a multiplication factor for the minimal "gap" (distance) between axis labels drawn. Its default is 1 for labels parallel to the axis, and 0.25 for perpendicular ones.
  • Perpendicular labels no longer overlap, fixing bug PR#17384.
  • The default method of plot() gains new arguments xgap.axis = NA and ygap.axis = NA to be passed to the x- and y- axis(.., gap.axis=*) calls.
  • removeSource() now works not only for functions but also for some language objects.
  • as.call(), rep.int(), rep_len() and nchar() dispatch internally.
  • is(object, class2) looks for class2 in the calling namespace after looking in the namespace of class(object).
  • extendrange(.., f) with a length-2 f now extends separately to the left and the right.
  • lengths() dispatches internally to S4 methods.
  • download.file() on Windows now uses URLdecode() to determine the file extension, and uses binary transfer (mode = "wb") also for file extension ‘.rds’.
  • The help page for download.file() now contains the same information on all platforms.
  • Setting C locale for collation via environment variables LC_ALL and LC_COLLATE and via a call to Sys.setlocale() now takes precedence over environment variable R_ICU_LOCALE.
  • There is a new function, nullfile(), to give the file name of the null system device (e.g., ‘/dev/null’) on the current platform.
  • There are two new options, keep.parse.data and keep.parse.data.pkgs, which control whether parse data are included into sources when keep.source or keep.source.pkgs is TRUE. By default, keep.parse.data.pkgs is now FALSE, which changes previous behavior and significantly reduces space and time overhead when sources are kept when installing packages.
  • In rapply(x, ..), x can also be "list-like" and of length >= 2^{31}.
  • trimws() gets new optional whitespace argument, allowing more extensive definitions of "space", such as including Unicode spaces (as wished in PR#17431).
  • weighted.mean() no longer coerces the weights to a double/numeric vector, since sum() now handles integer overflow. This makes weighted.mean() more polymorphic and endomorphic, but be aware that the results are no longer guaranteed to be a vector of type double.
  • When loading namespaces, S3 method registrations which overwrite previous registrations are now noted by default (using packageStartupMessage()).
  • compiler::cmpfile() gains a version argument, for use when the output file should be saved in serialization format 2.
  • The axis labeling in the default method of pairs() may now be toggled by new options horOdd and verOdd.
  • (Not Windows nor macOS.) Package tcltk now supports an environment variable R_DONT_USE_TK which if set disables Tk initialization. This is intended for use to circumvent errors in loading the package, e.g. with recent Linux running under an address sanitizer.
  • The numeric method of all.equal() gets optional arguments countEQ and formatFUN. If countEQ is true, the mean error is more sensible when many entries are equal.
  • outer(x,y, FUN = "*") is more efficient using tcrossprod(u,v) instead of u %*% t(v).
  • vcov() is more efficient via new optional arguments in summary.mlm().
  • The default method of summary() gets an option to choose the kind of quantile()s to use; wish of PR#17438.
  • Fitting multiple linear models via lm() does work with matrix offsets, as suggested in PR#17407.
  • The new functions mem.maxVSize() and mem.maxMSize() allow the maximal size of the vector heap and the maximal number of nodes allowed in the current R process to be queried and set.
  • news() gains support for ‘NEWS.md’ files.
  • An effort has been started to have our reference manuals, i.e., all help pages. show platform-independent information (rather than Windows or Unix-alike specifics visible only on that platform). Consequently, the Windows version of X11() / x11() got identical formal arguments to the Unix one.
  • sessionInfo()$running has been factored out in a new variable osVersion.
  • slice.index() now also works for multi-dimensional margins.
  • untar() used with an external tar command assumes this supports decompression including xz and automagically detecting the compression type. This has been true of all mainstream implementations since 2009 (for GNU tar, since version 1.22): older implementations are still supported via the new argument support_old_tars whose default is controlled by environment variable R_SUPPORT_OLD_TARS. (It looks like NetBSD and OpenBSD have ‘older’ tar commands for this purpose.)
  • The new function asplit() allow splitting an array or matrix by its margins.
  • New functions errorCondition() and warningCondition() provide a convenient way to create structured error and warning objects.
  • .Deprecated() now signals a warning of class "deprecatedWarning", and .Defunct() now signals an error of class "defunctError".
  • Many ‘package not found’ errors are now signaled as errors of class "packageNotFoundError".
  • As an experimental feature, when loadNamespace() fails because the requested package is not available the error is initially signaled with a retry_loadNamespace restart available. This allows a calling handler to try to install the package and continue.
  • S3method() directives in ‘NAMESPACE’ can now also be used to perform delayed S3 method registration.
  • Experimentally, setting environment variable _R_CHECK_LENGTH_1_LOGIC2_ will lead to warnings (or errors if the variable is set to a ‘true’ value) when && or || encounter and use arguments of length more than one.
  • Added "lines" and "chars" coordinate systems to grconvertX() and grconvertY().
  • getOption() is more efficient notably for the rare case when called with two arguments, from several contributors in PR#17394.
  • In .col(dim) and .row(dim), dim now may also be an integer-valued "double".
  • sQuote() and dQuote() get an explicit q argument with obvious default instead of using getOption("fancyQuotes") implicitly and unconditionally.
  • unzip() can list archives with comments and with spaces in file names even using an external unzip command.
  • Command line completion has a new setting rc.settings(dots = FALSE) to remove ... from the list of possible function arguments.
  • library() no longer checks packages with compiled code match R.version$platform. loadNamespace() never has, and increasingly the ‘canonical name’ does not reflect the important characteristics of compiled code.
  • The primitive functions drop() and unclass() now avoid duplicating their data for atomic vectors that are large enough, by returning ALTREP wrapper objects with adjusted attributes. R-level assignments to change attributes will also use wrapper objects to avoid duplicating data for larger atomic vectors. R functions like structure() and unname() will therefore not duplicate data in these settings. Generic vectors as produced by list() are not yet covered by this optimization but may be in due course.
  • In formals(), envir becomes an optional argument instead of being hardwired.
  • Instead of signalling an error for an invalid S4 object x, str(x) now gives a warning and subsequently still shows most parts of x, e.g., when slots are missing.
  • gamma(x) and lgamma(x) no longer warn when correctly returning Inf or underflowing to zero. This helps maximum likelihood and similar computations.
  • convertColor() is now vectorized, so a lot faster for converting many colours at once. The new argument vectorized to colorConverter() ensures that non-vectorized colour converters still work. (Thanks to Brodie Gaslam.)
  • download.file() and url() get new argument headers for custom HTTP headers, e.g., allowing to perform basic http authentication, thanks to a patch contributed by Gábor Csárdi.
  • File-based connection functions file(), gzfile(), bzfile() and xzfile() now signal an error when used on a directory.
  • For approx(), splinefun() etc, a new setting ties = c("ordered", ) allows skipping the sorting and still treat ties.
  • format(x) gives a more user friendly error message in the case where no method is defined. A minimal method is provided in format.default(x) when isS4(x) is true.
  • which(x) now also works when x is a long vector, thanks to Suharto Anggono's PR#17201. NB: this may return a double result, breaking the previous guarantee of an integer result.
  • seq.default() is more careful to return an integer (as opposed to double) result when its arguments are large and/or classed objects; see comment #9 of Suharto Anggono's PR#17497.
  • The plot() method for lm and glm fits, plot.lm(), gains a new option iter.smooth with a default of 0 for binomial fits, no longer down-weighting when smoothing the residuals.
  • zip() passes its list of files via standard input to the external command when too long for the command line (on some platforms).
  • data() gains an overwrite argument.
  • t.test() now also returns the standard error (in list component stderr).
  • model.matrix(*, contrasts.arg = CC) now warns about invalid contrasts.args.
  • Performance of substr() and substring() has been improved.
  • stopifnot() has been simplified thanks to Suharto Anggono's proposals to become considerably faster for cheap expressions.
  • The default ‘user agent’ has been changed when accessing http:// and https:// sites using libcurl. (A site was found which caused libcurl to infinite-loop with the previous default.)
  • sessionInfo() now also contains RNGkind() and prints it when it differs from the default; based on a proposal and patch by Gabe Becker in PR#17535. Also, RNGversion(getRversion()) works directly.
  • library() and require() now allow more control over handling search path conflicts when packages are attached. The policy is controlled by the new conflicts.policy option.
  • barplot() gets a formula method, thanks to a patch proposal by Arni Magnusson in PR#17521.
  • pmax() and pmin(x) now also work for long vectors, thanks to Suharto Anggono's PR#17533.
  • bxp() now warns when omitting duplicated arguments.
  • New hcl.colors() function to provide wide range of HCL-based colour palettes with much better perceptual properties than the existing RGB/HSV-based palettes like rainbow().
  • Also a new hcl.pals() function to list available palette names for hcl.colors().
  • Contributed by Achim Zeileis.
  • The default colours for image() and filled.contour() are now based on hcl.colors().
  • The palette-generating functions rainbow(), gray.colors(), etc. get a new rev argument to facilitate reversing the order of colors.
  • New str2lang() and str2expression() as streamlined versions of parse(text=., keep.source=FALSE) allow to abstract typical call constructions, e.g., in formula manipulations. (Somewhat experimental)
  • Add update_PACKAGES() for incrementally updating a package repository index, instead of rebuilding the index from scratch. Thanks to Gabe Becker in PR#17544 for the patch, based on part of his switchr package.

Full changelog available here.

Join over 500,000 subscribers.

Subscribe for our newsletter with best Mac offers from MacUpdate.

14 R Reviews

See all

Rate this app:

24 March 2009

Most helpful

Top-notch statistical analysis software for an unbeatable price. You do have to invest some time to learn how to work it, but that's well worth the price of admission. Many statistical tools become available on this platform way before others (much more costly ones). It is supported by a wide, global user and programmer base. Get yourself a book to learn how to use it if you are not the adventurous or "I'd rather do this with a command-line" type.
Like (3)
Version 2.8.1
31 July 2015
There's lots of software available for data analysis today: spreadsheets like Excel, batch-oriented procedure-based systems like SAS; point-and-click GUI-based systems like SPSS; data mining systems, and so on. What makes R different? R is free. As an open-source project, you can use R free of charge: no worries about subscription fees, license managers, or user limits. But just as importantly, R is open: you can inspect the code and tinker with it as much as you like (provided you respect the terms of the GNU General Public License version 2 under which it is distributed). Thousands of experts around the world have done just that, and their contributions benefit the millions of people who use R today. R is a language. In R, you do data analysis by writing functions and scripts, not by pointing and clicking. That may sound daunting, but it's an easy language to learn, and a very natural and expressive one for data analysis. But once you learn the language, there are many benefits. As an interactive language (as opposed to a data-in-data-out black-box procedures), R promotes experimentation and exploration, which improves data analysis and often leads to discoveries that wouldn't be made otherwise. A script documents all your work, from data access to reporting, and can instantly be re-run at any time. (This makes it much easier to update results when the data change.) Scripts also make it easy to automate a sequence of tasks that can be integrated into other processes. Many R users who have used other software report that they can do their data analyses in a fraction of the time. Graphics and data visualization. One of the design principles of R was that visualization of data through charts and graphs is an essential part of the data analysis process. As a result, it has excellent tools for creating graphics, from staples like bar charts and scatterplots to multi-panel Lattice charts to brand new graphics of your own devising. R's graphical system is heavily influenced by thought leaders in data visualization like Bill Cleveland and Edward Tufte, and as a result graphics based on R appear regularly in venues like the New York Times, the Economist, and the FlowingData blog. A flexible statistical analysis toolkit. All of the standard data analysis tools are built right into the R language: from accessing data in various formats, to data manipulation (transforms, merges, aggregations, etc.), to traditional and modern statistical models (regression, ANOVA, GLM, tree models, etc). All are included in an object-oriented framework that makes it easy to programatically extract out and combine just the information you need from the results, rather than having to cut-and-paste from a static report. Access to powerful, cutting-edge analytics. Leading academics and researches from around the world use R to develop the latest methods in statistics, machine learning, and predictive modeling. There are expansive, cutting-edge edge extensions to R in finance, genomics, and dozens of other fields. To date, more than 2000 packages extending the R language in every domain are available for free download, with more added every day. A robust, vibrant community. With thousands of contributors and more than two million users around the world, if you've got a question about R chances are, someone's answered it (or can). There's a wealth of community resources for R available on the Web, for help in just about every domain. Unlimited possibilities. With R, you're not restricted to choosing a pre-defined set of routines. You can use code contributed by others in the open-source community, or extend R with your own functions. And R is excellent for "mash-ups" with other applications: combine R with a MySQL database, an Apache web-server, and the Google Maps API and you've got yourself a real-time GIS analysis toolkit. That's just one big idea -- what's yours? source: http://www.inside-r.org/why-use-r
Like (1)
Version 3.2.1
1 answer(s)
08 November 2016
Excel is NOT a data processing app, even though many use it as one.

The biggest problem is "Intellisense" (a misnomer if ever I saw one)

Example: Genes named Jun16, Oct4 etc become dates on import. When you define the cells as TEXT then they become something like 2856198267 (which I think is the number of seconds since a certain date which is how Excel stores dates internally). In other words: Excel changes your data without you telling it to. That is an absolute no-no for data analysis apps.
22 June 2015
Today's download is for the SOURCE code, not the R.app application. You will need the developer tools to build the app.
Version 3.2.1
05 May 2015
Hey everyone, i have a problem. Just downloaded R, but this came up: You're using a non-UTF8 locale, therefore only ASCII characters will work. Does anyone know what i can do?
Version 3.2.0
You need to invest time in learning R, but then once you're really into it there's no way you can go back to SPSS etc. An IDE (e.g. RStudio) is highly recommended though.
Like (1)
Version 3.1.3
08 February 2015
cross platform capability, extremely powerful, well supported. Learning curve is a bit steep but well worth it.
Like (1)
Version 3.1.2
12 April 2014
Great software, but take care with "Snow Leopard" download link !! It exists a "Mavericks" version too ;-)
Like (2)
Version 3.1.0
12 April 2014
Package installer fails on my 2009 MacBook Pro 13" running Snow Leopard 10.6.8 with all available Software Updates installed
Version 3.1.0
03 August 2012
R has revolutionized statistical computing over the last 10 years. Every student of statistics or science today probably needs to learn R. It can be used for amazingly complex analysis, as well as the simple stuff. It has a reputation for being hard to learn, but that's mainly because it's so powerful and flexible. Fortunately there are many good books available to teach R. I like "Introductory Statistics with R," by Peter Dalgaard.
Like (2)
Version 2.15.1
05 January 2012
Version 2.14.1
26 September 2010
R is the tool for choice for serious statistical analysis. It's not an easy platform, however, and learning takes some time. The good side is how powerful it is for *any* type of analysis, data, or problem. The help support is very good and user forums are very active and helpful. This is not the package of choice if you are doing sporadic data analysis, but I'd recommend it to anyone seriously involved in statistical analysis. If you are just starting with statistics and plan to keep doing data analysis- go for it. If you are using other packages and statistical analysis is a major part of your study, go for it. No other package offers the versatility and support R has. If the command line mode is really intimidating to you, you can use the R-Commander GUI (just install the Rcmdr package), but the real power of R lies in its command-line. You can run R with the binary cocoa application, from the Terminal, within emacs, or within TextMate.
Like (3)
Version 2.11.1
1 answer(s)
05 January 2012
and rStudio http://rstudio.org/


App requirements: 
  • Intel 64
  • OS X 10.11.0 or later
Developer Website: 
Download(79.3 MB)MacUpdateInstall with MacUpdate

Downloaded & Installed 102,968 times