Free software environment for statistical computing and graphics

R for Windows

R for Windows 4.4.0

  -  81.7 MB  -  Open Source
  • Latest Version

    R for Windows 4.4.2

  • Operating System

    Windows 7 / Windows 7 64 / Windows 8 / Windows 8 64 / Windows 10 / Windows 10 64 / Windows 11

  • User Rating

    Click to vote
  • Author / Product

    The R Foundation / External Link

  • Filename

    R-4.4.0-win.exe

  • MD5 Checksum

    fa77aac9b7ca57f353a6505187741e91

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of R for Windows 4.4.0.


For those interested in downloading the most recent release of R for Windows or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • R for Windows 4.4.0 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    R for Windows 4.4.0 Screenshot 1

What's new in this version:

Significant user-visible changes:
- Startup banners, R --version, sessionInfo() and R CMD check no longer report (64-bit) as part of the platform as this is almost universal - the increasingly rare 32-bit platforms will still report (32-bit).
- On Windows, ditto for window titles
- is.atomic(NULL) now returns FALSE, as NULL is not an atomic vector. Strict back-compatibility would replace is.atomic(foo) by (is.null(foo) || is.atomic(foo)) but should happen only sparingly.

New features:
- The confint() methods for "glm" and "nls" objects have been copied to the stats package. Previously, they were stubs which called versions in package MASS. The MASS namespace is no longer loaded if you invoke (say) confint(glmfit). Further, the "glm" method for profile() and the plot() and pairs() methods for class "profile" have been copied from MASS to stats.
- The confint() and profile methods for "glm" objects have gained a possibility to do profiling based on the Rao Score statistic in addition to the default Likelihood Ratio. This is controlled by a new test = argument.
- The pairs() method for "profile" objects has been extended with a which = argument to allow plotting only a subset of the parameters.
- The "glm" method for anova() computes test statistics and p-values by default, using a chi-squared test or an F test depending on whether the dispersion is fixed or free. Test statistics can be suppressed by giving argument test a false logical value.
- In setRepositories() the repositories can be set using their names via name = instead of index ind =.
- methods() and .S3methods() gain a all.names option for the (rare) case where functions starting with a . should be included.
- Serializations can now be interrupted (e.g., by Ctrl-C on a Unix-alike) if they take too long, e.g., from save.image(), thanks to suggestions by Ivan Krylov and others on R-devel.
- New startup option --max-connections to set the maximum number of simultaneous connections for the session. Defaults to 128 as before: allowed values up to 4096 (but resource limits may in practice restrict to smaller values).
- R on Windows (since Windows 10 2004) now uses the new Segment Heap allocator. This may improve performance of some memory-intensive applications.
- When R packages are built, typically by R CMD build , the new --user=<build_user> option overrides the (internally determined) user name, currently Sys.info()["user"] or LOGNAME. This is a (modified) fulfillment of Will Landau's suggestion in PR#17530.
- tools::testInstalledBasic() gets new optional arguments outDir and testSrcdir, e.g., allowing to use it in a != setup, and in standard "binary" Windows installation *ifa source tests/ folder is present.
- range(<DT_with_Inf>, finite = TRUE) now work for objects of class "Date", "POSIXct", and "POSIXlt" with infinite entries, analogously to range.default(), as proposed by Davis Vaughan on R-devel. Other range()-methods can make use of new function .rangeNum().
- New .internalGenerics object complementing .S3PrimitiveGenerics, for documentation and low-level book-keeping.
- grid() now invisibly returns the x- and y- coordinates at which the grid-lines were drawn.
- norm(., type) now also works for complex matrices.
- kappa(., exact = TRUE, norm = *) now works for all norms and also for complex matrices. In symmetric / triangular cases, the new argument uplo = "U" | "L" allows the upper or lower triangular part to be specified.
- memDecompress(type = "unknown") recognizes compression in the default 'zlib' format as used by memCompress(type = "gzip").
- memCompress() and memDecompress() will use the libdeflate library (<https://github.com/ebiggers/libdeflate>) if installed. This uses the same type of compression for type = "gzip" but is 1.5-2x faster than the system libz library on some common platforms: the speed-up may depend on the library version.
- diff() for objects of class "Date", "POSIXct", and "POSIXlt" accepts a units argument passed via ....
- Dynamic help now does a much better job of rendering package DESCRIPTION metadata.
- Rprof() gains an event argument and support for elapsed (real) time profiling on Unix
- filled.contour() gains a key.border argument.
- tools::update_pkg_po() gets arguments pot_make and mo_make for _not_ re-making the corresponding files, and additionally a verbose argument.
- Hexadecimal string colour specifications are now accepted in short form, so, for example, we can use "#123", which is equivalent to "#112233".
- Plain-text help shows var markup by angle brackets.
- The new experimental primitive function declare() is intended to eventually allow information about R code to be communicated to the interpreter, compiler, and code analysis tools. The syntax for declarations is still being developed.
- Functions psmirnov(), qsmirnov() and rsmirnov() in package stats have had argument two.sided renamed to alternative, to take into account that the permutation distributions of the one-sided statistics can be different in the case of ties. Consequence of PR#18582.
- sort() is now an implicit S4 generic in methods.
- Formatting and printing, format(z), print(z), of complex vectors z no longer zap relatively small real or imaginary parts to zero, fixing PR#16752. This is an API change, as it was documented previously to round real and imaginary parts together on purpose, producing nicer looking output. As mentioned, e.g. in the PR, this change is compatible with many other "R-like" programming environments.
- We have simplified the internal code and now basically format the real and imaginary parts independently of each other.
- New experimental functions Tailcall() and Exec() to support writing stack-space-efficient recursive functions.
- Where characters are attempted to be plotted by pdf(), postscript() and xfig() which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose iconv() does transliteration silently plot the transliteration.)
- In a UTF-8 locale some transliterations are now done with a warning, although the OS may have got there first. These are warnings as they will continue to be replaced by dots in earlier versions of R.
- The matrix multiplication functions crossprod() and tcrossprod() are now also primitive and S3 generic, as %*% had become in R 4.3.0.
- source() and example() have a new optional argument catch.aborts which allows continued evaluation of the R code after an error.
- The non-Quartz tiff() devices allow additional types of compression if supported by the platform's libtiff library.
- The list of base and recommended package names is now provided by tools::standard_package_names().
- cairo_pdf() and cairo_ps() default to onefile = TRUE to closer match pdf() and postscript().
- New option catch.script.errors provides a documented way to catch errors and then continue in non-interactive use.
- L %||% R newly in base is an expressive idiom for the phrases if(!is.null(L)) L else R or if(is.null(L)) R else L.
- The return value from warnings() now always inherits from "warnings" as documented, now also in the case of no warnings where it previously returned NULL.
- as.complex("1i") now returns 0 + 1i instead of NA with a warning.
- z - On Alpine Linux iconv() now maps "latin2", "latin-2", "latin9" and "latin-9" to encoding names the OS knows about (case-insensitively).
- iconv(sub = "Unicode") now always zero-pads to four (hex) digits, rather than to 4 or 8. (This seems to have become the convention once Unicode restricted the number of Unicode points to 2^21 - 1 and so will never need more than 6 digits.)
- NCOL(NULL) now returns 0 instead of 1, for consistency with cbind().
- The information for the Euro glyph missing from the Adobe .afm files for the Courier, Helvetica and Times families has been copied from their URW equivalents - this will improve vertical centring in the pdf() and postscript() devices.
- The included BLAS sources have been updated to those shipped with LAPACK version 3.12.0. The changes are almost entirely cosmetic.
- The included LAPACK sources have been updated to version 3.12.0 and some further double-complex routines added.
- There are new font families for the 2014--5 URW 2.0 fonts (see ?pdf) which are included in recent versions of Ghostscript. These have font widths for most Greek glyphs and a few others which were missing from the original versions (whose font families remain available for reproducibility, although Ghostscript-based viewers will render using the 2.0 versions).
- Improve the large-n efficiency of as.matrix(), thanks an R contributors effort, notably by Tim Taylor and Heather Turner, see PR#18660.
- The default and numeric methods of all.equal() get a check.class option.
- zapsmall() gets new optional arguments, function mFUN and min.d, for extra flexibility; fulfills a wish in PR#18199. Also, it is now an implicit S4 generic in package methods.
- The Rd filter for aspell() gains an ignore argument.
- New generic function sort_by(), primarily useful for the data.frame method which can be used to sort rows of a data frame by one or more columns.
- The icence headers for the RPC code in src/extra/xdr have been updated to use the GPL-compatible licence published by Oracle America in 2010.
- New function pkg2HTML() in tools to create single-page HTML reference manuals for R packages.
- The byte code evaluator now uses less C stack space for recursive calls to byte-compiled functions. It also makes more of an effort to avoid allocations for scalar return values.
- New completion option backtick (disabled by default) allows non-syntactic completions to be wrapped in backquotes. This is currently only useful for Jupyter notebooks via the IRkernel package, and may cause problems for other backends.

Installation:
- The parser has been updated to work with bison 3.8.2, which is now used for the pre-generated parsers in gram.c, file.c, and gramRd.c. A few parser error messages have changed, which may affect code that relies on exact messages.

Installation on windows:
- The makefiles and installer scripts for Windows have been tailored to Rtools44, an update of the Rtools43 toolchain. It is based on GCC 13 and newer versions of MinGW-W64, binutils and libraries (targeting 64-bit Intel CPUs). R-devel can no longer be built using Rtools43 without changes.
- Rtools44 has experimental support for 64-bit ARM (aarch64) CPUs _via_ the LLVM 17 toolchain using lld, clang/flang-new and libc++.

Utilities:
- R CMD check notes when S4-style exports are used without declaring a strong dependence on package methods
- tools::checkRd() (used by R CMD check) detects more problems with Sexpr-based dynamic content, including bad nesting of Sexprs and invalid arguments
- tools::checkRd() now reports Rd titles and section names ending in a period; this is ignored by R CMD check unless environment variable _R_CHECK_RD_CHECKRD_MINLEVEL_ is set to -5 or smaller.
- R CMD check now notes Rd files without an alias, as long documented in 'Writing R Extensions' 1.3.1. The check for a missing description has been moved from tools::checkRd() to tools::checkRdContents().
- R CMD check now visits inst/NEWS.Rd and OS-specific man subdirectories when checking Rd files.
- tools::checkDocFiles() and tools::checkRdContents() now also check internal Rd files by default, but "specially" (ignoring missing documentation of arguments).
- R CMD Rdiff gets option --useEx.
- R CMD check now warns on non-portable uses of Fortran KIND such as INTEGER(KIND=4) and REAL(KIND=8).
- To see the failing lines set environment variable _R_CHECK_FORTRAN_KIND_DETAILS_ to a true value.
- When checking Rd files, R CMD check now notes some of the "lost braces" that tools::checkRd() finds. Typical problems are Rd macros missing the initial backslash (e.g., code{...}), in-text set notation (e.g., {1, 2}, where the braces need escaping), and itemize lists with describe-style entries of the form item{label}{description}.
- R CMD INSTALL (and hence check) will compile C++ code with -DR_NO_REMAP if environment variable _R_CXX_USE_NO_REMAP_ is set to a true value. It is planned that this will in future become the default for compiling C++.
- The new built-in Rd macro dontdiff{} can be used to mark example code whose output should be ignored when comparing check output to reference output (tests/Examples/-Ex.Rout.save). The dontdiff tag, like donttest, is _not_ shown on the rendered help page, so provides a clean alternative to ## IGNORE_RDIFF_(BEGIN|END) comments.
- R CMD build when there is no NAMESPACE, now uses the recommended exportPattern("^[^.]"), instead of exporting everything.
- R CMD check now warns about non-ASCII characters in the NAMESPACE file (in addition to R files). Such packages are not portable and may fail to install on some platforms.

C-level facilities:
- Headers R_ext/Applic.h and R-ext/Linpack.h used to include R_ext/BLAS.h although this was undocumented and unneeded by their documented entry points. They no longer do so.
- New function R_missing(), factored out from do_missing(), used to fix PR#18579.
- SEXP type S4SXP has been renamed to OBJSXP to support experimenting with alternative object systems. The S4SXP value can still be used in C code but is now deprecated. Based on contributions from the R Consortium's Object-Oriented Programming Working Group.
- New function pow1p(x,y) for accurate (1+x)^y.
- mkCharLenCE was incorrectly documented to take a size_t length but was implemented with int (and character strings in R are limited to 2^31 - 1 bytes).

Deprecated and defunct:
- data() no longer handles zipped data from long-defunct (since R 2.13.0) --use-zip-data installations.
- The legacy graphics devices pictex() and xfig() are now deprecated. They do not support recent graphics enhancements and their font handling is rudimentary. The intention is to retain them for historical interest as long as they remain somewhat functional.
- Support for encoding = "MacRoman" has been removed from the pdf() and postscript() devices - this was a legacy encoding supporting classic macOS up to 2001 and no longer has universal libiconv support.
- is.R() is deprecated as no other S dialect is known to be in use (and this could only identify historical dialects, not future ones).
- Further information on calls can be obtained by setting the environment variable _R_DEPRECATED_IS_R_ to error which turns the deprecation warning into an error and so by default gives a traceback. (This is done by R CMD check --as-cran.)
- UseMethod() no longer forwards local variables assigned in the generic function into method call environments before evaluating the method body. This makes method calls behave more like standard function calls and makes method code easier to analyze correctly.
- The twelve as.data.frame.() methods which were deprecated only via _R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_ and in R CMD check --as-cran are formally deprecated now in favour of calling as.data.frame() or as.data.frame.vector(). The deprecation "check" now works also when as.data.frame() is S4 generic thanks to Ivan Krylov.
- The default method for the directional comparison operators <, >, <=, and >= now signals an error when one of the operands is a language object, i.e. a symbol or a call.
- For terms.formula(), deprecate abb and neg.out arguments _formally_ in addition to just documenting it.

Fixed:
- The methods package is more robust to not being attached to the search path. More work needs to be done.
- pairwise.t.test() misbehaved when subgroups had 0 DF for variance, even with pool.sd = TRUE.
- Probability distribution functions [dpq](x, *), but also bessel[IKJY](x, .) now consistently preserve attributes(x) when length(x) == 0, e.g., for a 2 x 0 matrix.
- Group "Summary" computations such as sum(1:3, 4, na.rm = 5, NA, 7, na.rm = LL) now give an error instead of either 17 or NN for LL true or false, as proposed by Ivan Krylov on the R-devel mailing list. (This also means it is now an error to specify na.rm more than once.)
- as.complex(x) now returns complex(real = x, imaginary = 0) for _all_ numerical and logical x, notably also for NA or NA_integer_.
- Directories are now omitted by file.copy(, recursive = FALSE) and in file.append()
- gsub() and sub() are now more robust to integer overflow when reporting errors caused by too large input strings
- Top-level handlers are now more robust to attempts to remove a handler whilst handlers are running
- The handling of Alt+F4 in dialogs created on Windows using GraphApp has been fixed
- density() more consistently computes grid values for the FFT-based convolution, following Robert Schlicht's analysis and proposal in PR#18337, correcting density values typically by a factor of about 0.999. Argument old.coords = TRUE provides back compatibility.
- palette.colors() gains a name argument that defaults to FALSE controlling whether the vector of colours that is returned has names (where possible). PR#18529.
- tools::xgettext() no longer extracts the (non-translatable) class names from warningCondition and errorCondition calls.
- S3method(, , ) in the NAMESPACE file now works (again) when is visible from the namespace, e.g., imported, or in base.
- getParseData(f) now also works for a function defined in the first of several /R/*.R source files, thanks to Kirill Müller's report and Duncan Murdoch's patch in PR#16756.
- Rd Sexpr macros with nested #ifdef conditionals were not processed.
- A non-blocking connection with non-default encoding (such as a socket) now correctly returns from readLines() after new data has arrived also when its EOF had been reached previously. Thanks to Peter Meilstrup's report on R-devel and Ivan Krylov's report and patch proposal in PR#18555.
- tools::checkRdContents() failed to detect empty argument descriptions when they spanned multiple lines, including those generated by prompt(). These cases are now noted by R CMD check.
- Plain-text help no longer outputs spurious colons in the arguments list (for multi-line item labels in the Rd source).
- kappa() and rcond() work correctly in more cases; kappa(., norm = "2") now warns that it computes the 1-norm with (default) exact = FALSE; prompted by Mikael Jagan's quite comprehensive PR#18543.
- Rd skeletons generated by prompt() or promptData() now use a dummy title (so R CMD build works). tools::checkRdContents() has been updated to detect such template leftovers, including from promptPackage().
- When S4 method dispatch fails because no method was found, the error message now includes the signature argument names; thanks to Michael Chirico's proposal on the R-devel list.
- withAutoprint({ .. }) now preserves srcrefs previously lost, thanks to Andrew Simmons' report plus fix in PR#18572.
- transform.data.frame() no longer adjusts names; in particular, untransformed variables are kept as-is, including those with syntactically invalid names
- The keep.source option for Rd Sexpr blocks is no longer ignored.
- The formula methods for t.test() and wilcox.test() now catch when paired is passed, addressing PR#14359; use Pair(x1, x2) ~ 1 for a paired test.
- The level reported in the browser prompt was often too large. It now shows the number of browser contexts on the stack.
- For cbind() and rbind(), the optional deparse.level argument is now properly passed to methods, thanks to Mikael Jagan's PR#18579 and comments there.
- Some error and warning messages for large ('long vector') matrix(v, nr, nc) and dim(m) - readChar(useBytes = TRUE) now terminates strings even when the underlying connection uses extra spaces in the input buffer. This fixes problems with extra garbage seen with gzip connections, PR#18605.
- Named capture in PCRE regular expressions now works also with more than 127 named groups
- Datetime functions are now robust against long jumps when dealing with internal time zone changes. This avoids confusing warnings about an invalid time zone, previously triggered by turning warnings into errors or handling them via tryCatch
- Datetime functions now restore even an empty TZ environment variable after internal time zone changes
- drop.terms(*) now drops response as by default, keep.response = FALSE, fixing PR#18564 thanks to Mikael Jagan.
- dummy.coef(.) now also works for lm()-models with character categorical predictor variables rather than factor ones, fixing PR#18635 reported by Jinsong Zhao.
- formals(f) - Correct as.function(, .)'s error message.
- removeSource() is yet more thorough in finding and removing "srcref" and the other source references from parsed R language chunks, fixing PR#18638 thanks to Andrew Simmons.
- dgeom() is more accurate now, notably when its result is very small, fixing PR#18642 thanks to the proposal of Morten Welinder, also improving other instances where C level binom_raw(x, n, ..) has x == 0 or x== n.
- warning() with options(warn = 1) has improved output for multi-line messages.
- axis.Date() and axis.POSIXct() now respect the par("lab") setting for the number of pretty() intervals.
- Comparisons for language objects (which are based on deparsing) are now more careful about using accurate deparsed results
- Plain-text help (Rd2txt) now correctly preserves blank lines following single-line dontrun code.
- [*] no longer sets wrong "balanced" attribute, fixing PR#18681 thanks to Mikael Jagan.
- str() now deparses the call as expected, fixing PR#18684, reported by Dave Slager.
- In Rd examples, code following the closing brace of a dontrun, dontshow or donttest tag on the same line is no longer skipped when R CMD check runs the examples.
- as.data.frame(matrix(*, ncol=0)) now gets valid names() and colnames(); reported by Davis Vaughan on the R-devel list.
- Internal Mathlib function stirlerr(n) is now almost fully (52-bit) accurate for all n >= ~5.9 and more accurate also in the range 1 -- 5.9. This entails small ("after 12th decimal") changes in density functions, e.g., dgamma() in _some_ regions of their support. The fix was partly prompted by Morten Welinder's PR#18640.
- Numbers like 9876543.2 are now considered non-integer by Mathlib internal R_nonint(), amending original fix of PR#15734.
- Rd comment lines no longer cause broken paragraphs in the rendered PDF and plain-text help. In code blocks, pure comment lines (starting with %) no longer produce an empty line.
- xtabs(Freq ~ .) now consistently defaults to na.action = na.pass,using na.rm = FALSE (added as an argument) when summing over Freq
- tools::testInstalledPackage() is no longer silent about failures from running examples or tests and its return code no longer ignores failures from checking vignettes.