Free software environment for statistical computing and graphics

R for Windows

R for Windows 4.3.0

  -  78.15 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.3.0-win.exe

  • MD5 Checksum

    ffa08d2ea0f9534a6c1be4422266184c

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.3.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.3.0 Screenshots

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

    R for Windows 4.3.0 Screenshot 1

What's new in this version:

Significant user-visible changes:
- Calling && or || with LHS or (if evaluated) RHS of length greater than one is now always an error, with a report of the form
- 'length = 4' in coercion to 'logical(1)'
- Environment variable _R_CHECK_LENGTH_1_LOGIC2_ no longer has any effect

New features:
- The included BLAS sources have been updated to those shipped with LAPACK version 3.10.1. (This caused some platform-dependent changes to package check output.) And then to the sources from LAPACK version 3.11.0 (with changes only to double complex subroutines).
- The included LAPACK sources have been updated to include the four Fortran 90 routines rather than their Fortran 77 predecessors. This may give some different signs in SVDs or eigendecompositions.. (This completes the transition to LAPACK 3.10.x begun in R 4.2.0.)
- The LAPACK sources have been updated to version 3.11.0. (No new subroutines have been added, so this almost entirely bug fixes: Those fixes do affect some computations with NaNs, including R's NA.)
- The parser now signals _classed_ errors, notably in case of the pipe operator |>. The error object and message now give line and column numbers, mostly as proposed and provided
- toeplitz() is now generalized for asymmetric cases, with a toeplitz2() variant.
- xy.coords() and xyz.coords() and consequently, e.g., plot(x,y, log = "y") now signal a _classed_ warning about negative values of y (where log(.) is NA). Such a warning can be specificallysuppressed or caught otherwise.
- Regular expression functions now check more thoroughly whether their inputs are valid strings (in their encoding, e.g. in UTF-8).
- The performance of grep(), sub(), gsub() and strsplit() has been improved, particularly with perl = TRUE and fixed = TRUE. Use of useBytes = TRUE for performance reasons should no longer be needed and is discouraged: it may lead to incorrect results.
- apropos() gains an argument dot_internals which is used
- Support in tools::Rdiff() for comparing uncompressed PDF files is further reduced - see its help page.
- qqplot(x, y, ...) gains conf.level and conf.args arguments for computing and plotting a confidence band for the treatment function transforming the distribution of x into the distribution of y (Switzer, 1976, _Biometrika_). Contributed
- Performance of package_dependencies() has been improved for cases when the number of dependencies is large.
- Strings newly created
- Support for readLines(encoding = "bytes") has been added to allow processing special text files byte-by-byte, without creating invalid strings.
- iconv(from = "") now takes into account any declared encoding of the input elements and uses it in preference to the native encoding. This reduces the risk of accidental creation of invalid strings, particularly when different elements of the input have different encoding (including "bytes").
- Package repositories in getOption("repos") are now initialized from the repositories file when utils is loaded (if not already set, e.g., in .Rprofile). (From a report and patch proposal
- compactPDF() gets a verbose option.
- type.convert() and hence read.table() get new option tryLogical = TRUE with back compatible default. When set to false, converts "F" or "T" columns to character.
- Added new unit prefixes "R" and "Q" for abbreviating (unrealistically large) sizes beyond 10^{27} in standard = "SI",
- as.data.frame()'s default method now also works fine with atomic objects inheriting from classes such as "roman", "octmode" and "hexmode", such fulfilling the wish of PR#18421,
- The as.data.frame.vector() utility now errors for wrong-length row.names. It warned for almost six years, with "Will be an error!".
- sessionInfo() now also contains La_version() and reports codepage and timezone when relevant, in both print() and toLatex() methods which also get new option tzone for displaying timezone information when locale = FALSE.
- New function R_compiled_by() reports the C and Fortran compilers used to build R, if known.
- predict(<lm>, newdata = *) no longer unnecessarily creates an offset of all 0s.
- solve() for complex inputs now uses argument tol and
- predict(<rank-deficient lm>, newdata=*) now obeys a new argument rankdeficient, with new default "warnif", warning only if there are non-estimable cases in newdata. Other options include rankdeficient = "NA", predicting NA for non-estimable newdata cases. This addresses PR#15072
- Rgui console implementation now works better with the NVDA screen reader when the full blinking cursor is selected. The underlying improvements in cursor handling may help also other screenreaders on Windows.
- The drop-field control in GraphApp can now be left with the TAB key and all controls can be navigated in the reverse order using the Shift+TAB key, improving accessibility of the Rgui configuration editor.
- qnorm(<very large negative>, log.p=TRUE) is now fully accurate (instead of to "only" minimally five digits).
- demo(error.catching) now also shows off withWarnings() and tryCatchWEMs().
- As an experimental feature the placeholder _ can now also be used in the rhs of a forward pipe |> expression as the first argument in an extraction call, such as _$coef. More generally, it can be used as the head of a chain of extractions, such as _$coef[[2]].
- Spaces in the environment variable used to choose the R session's temporary directory (TMPDIR, TMP and TEMP are tried in turn) are now fatal. (On Windows the 'short path' version of the path is tried and used if that does not contain a space.)
- all.equal.numeric() gets a new optional switch giveErr to return the numeric error as attribute. Relatedly, stopifnot(all.equal<some>(a, b, ..)) is as "smart" now, as stopifnot(all.equal(....)) has been already, thus allowing
- customized all.equal<Some>() wrappers.
- R on Windows is now able to work with path names longer than 260 characters when these are enabled in the system (requires at least Windows 10 version 1607). Packages should be updated to work with long paths as well, instead of assuming PATH_MAX to be the maximum length. Custom front-ends and applications embedding
- R need to update their manifests if they wish to allow thisfeature. See <https://blog.r-project.org/2023/03/07/path-length-limit-on-windows> for more information.
- 'Object not found' and 'Missing argument' errors now give a more accurate error context. Patch provided
- The @ operator is now an S3 generic. Based on contributions
- New generic chooseOpsMethod() provides a mechanism for objects to resolve cases where two suitable methods are found for an Ops Group Generic. This supports experimenting with alternative object systems. Based on contributions
- inherits(x, what) now accepts values other than a simple character vector for argument what. A new generic, nameOfClass(), is called to resolve the class name from what. This supports experimenting with alternative object systems. Based on contributions
- Detection of BLAS/LAPACK in use (sessionInfo()) with FlexiBLAS now reports the current backend.
- The "data.frame" method for subset() now warns about extraneous arguments, typically catching the use of = instead of == in the subset expression.
- Calling a:b when numeric a or b is longer than one may now be made into an error
- density(x, weights = *) now warns if automatic bandwidth selection happens without using weights; new optional warnWbw may suppress the warning. Prompted
- rm(list = *) is faster and more readable
- The plot.lm() function no longer produces a normal Q-Q plot for GLMs. Instead it plots a half-normal Q-Q plot of the absolute value of the standardized deviance residuals.
- The print() method for class "summary.glm" no longer shows summary statistics for the deviance residuals
- The tapply() function now accepts a data frame as its X argument, and allows INDEX to be a formula in that case. by.data.frame() similarly allows INDICES to be a formula.
- The performance of df[j] <- value (including for missing j) and write.table(df) has been improved for data frames df with a large number of columns. (
- The matrix multiply operator %*% is now an S3 generic, belonging to new group generic matrixOps. From Tomasz Kalinowski's contribution in PR#18483.
- New function array2DF() to convert arrays to data frames, particularly useful for the list arrays created

Dates and times:
- On platforms where (non-UTC) datetimes before 1902 (or before 1900 as with system functions on recent macOS) are guessed
- (Platforms using --with-internal-tzone, including Windows and
- strftime() tries harder to determine the offset for the "%z" format, and succeeds on the mainstream R platforms.
- strftime() has a limit of 2048 bytes on the string produced - attempting to exceed this is an error. (Previously it silently truncated at 255 bytes.)
- sessionInfo() records (and
- Objects of class "POSIXlt" created in this version of R always have 11 components: component zone is always set, and component gmtoff is set for times in UTC and usually set on the (almost all) platforms which have C-level support, otherwise is NA.
- There are comprehensive validity checks on the structure of objects of class "POSIXlt" when converting (including formatting and printing). (This avoids mis-conversions of hand-crafted objects.)
- There is some support for using the native date-time routines on macOS: this is only viable on recent versions (e.g. 12.6 and 13) and does get wrong some historical changes (before 1900, during WWII). Use of --with-internal-tzone remains the default.
- as.POSIXct(<numeric>) and as.POSIXlt(.) (without specifying origin) now work. So does as.Date(<numeric>).
- as.Date.POSIXct(., tz) now treats several tz values, notably "GMT" as equivalent to "UTC", proposed and improved
- Experimental balancePOSIXlt() utility allows using "ragged" and or out-of-range "POSIXlt" objects more correctly, e.g., in subsetting and subassignments. Such objects are now documented.
- More experimentally, a "POSIXlt" object may have an attribute "balanced" indicating if it is known to be filled or fully balanced.
- Functions axis.Date() and axis.POSIXct() are rewritten to gain better default tick locations and better default formats
- The mapping of Windows' names for time zones to IANA's 'Olson' names has been updated. When ICU is available (it is by
- default), it is used to get a mapping for the current region set in Windows. This can be overridden

Graphics:
- The graphics engine version, R_GE_version, has been bumped to 16 and so packages that provide graphics devices should be reinstalled.
- The grDevices and grid packages have new functions for rendering typeset glyphs, primarily: grDevices::glyphInfo() and
- grid::grid.glyph().
- Rendering of typeset glyphs is only supported so far on the Cairo-based graphics devices and on the pdf() and quartz() devices.
- The defined behaviour for "clear" and "source" compositing operators (via grid::grid.group()) has been changed (to align better with simple interpretation of original Porter-Duff definitions).
- Support for gradients, patterns, clipping paths, masks, groups, compositing operators, and affine transformations has been added to the quartz() device.

Installation on a unix-alike:
- A system installation of generic LAPACK 3.10.0 or later will be preferred to the version in the R sources.
- configure option --with-lapack=no (equivalently --without-lapack) forces compilation of the internal LAPACK sources.
- If --with-lapack is not specified, a system liblapack is looked for and used if it reports version 3.10.0 or later and does not
- contain BLAS routines.
- Packages using LAPACK will need to be reinstalled if this changes to using an external library.
- On aarch64 Linux platforms using GCC, configure now defaults to -fPIC (instead of -fpic), as desired in PR#18326.
- configure now checks conversion of datetimes between POSIXlt and POSIXct around year 2020. Failure (which has been seen on platforms missing tzdata) is fatal.
- If configure option --with-valgrind-instrumentation is given value 1 or 2, option --with-system-valgrind-headers is now the
- default and ignored (with a warning). It is highly recommended that the system headers are installed alongside valgrind: they are part of its packaging on some Linux distributions and packaged separately (e.g. in the valgrind-devel RPM) on others. configure will give a warning if they are not found.
- The system headers will be required in a future release of R to build with valgrind instrumentation.
- libcurl 8.x is now accepted

Installation on windows:
- The makefiles and installer scripts for Windows have been tailored to Rtools43, an update of the Rtools42 toolchain. It is based on gcc 12 and newer versions of MinGW-W64, binutils and libraries. At this time R-devel can still be built using Rtools42 without changes, but when R-devel is installed via the installer, it will
- Old make targets rsync-extsoft and 32-bit ones that are no longer needed have been removed.
- Default builds (including for packages) no longer select C99. Thus the C standard used is the default for the compiler, which
- for the toolchain in Rtools43 is C17. (This is consistent with Unix builds.)
- PACKAGE INSTALLATION:
- The default C++ standard has been changed to C++17 where available (which it is on all currently checked platforms): if not C++14 or C++11 is used if available otherwise C++ is not supported.
- USE_FC_LEN_T is the default: this uses the correct (compiler-dependent) prototypes for Fortran BLAS/LAPACK routines
- called from C/C++, and requires adjustment of many such calls - see 'Writing R Extensions' SS6.6.1.
- There is initial support for C++23 as several compilers are now supporting -std=c++23 or -std=c++2b or similar. As for C++20, there no additional configure checks for C++23 features beyond a check that the compiler reports a __cplusplus value greater than that in the C++20 standard. C++ feature tests should be used.
- There is support for a package to indicate the version of the C standard which should be used to compile it, and for the installing user to specify this. In most cases R defaults to the C compiler's default standard which is C17 (a `bug-fix' of C11) -
- earlier versions of R or compilers may have defaulted to C99.

Current options are:
- USE_C17 Use a standard that is at most C17. The intention is to allow legacy packages to still be installed when later C standards become the default, including packages using new keywords as identifiers or with K&R-style function declarations. This will use C17 if available, falling back to C11.
- USE_C90 Use the C90 (aka C89) standard. (As that standard did not require compilers to identify that version, all we can verify is that the compiler does not claim to be using a later standard. It may accept C99 features - for example clang accepts // to make comments.)
- USE_C99 Use the C99 standard. This should be rarely needed - it avoids the few new features of C11/C17 which can be useful if a package assumes them if C17 is specified and they are not implemented.
- USE_C23 Use C23 (or in future, later). Compiler/library support for C23 is still being implemented, but LLVM clang from 15.0.0 and the upcoming GCC 13 have quite extensive support.
- These can be specified as part of the SystemRequirements field in the package's DESCRIPTION file or _via_ options --use-C17 and so on of R CMD INSTALL and R CMD SHLIB.
- For further details see "Writing R Extensions" SS1.2.5.
- (Windows) A src/Makefile.ucrt or src/Makefile.win file is no included after R_HOME/etcR_ARCH/Makeconf and so no longer needs to include that file itself. Installation of a package with such a file now uses a site Makevars file in the same way as a package with a src/Makevars.win file would.
- configure is now passed crucial variables such as CC and CFLAGS in its environment, as many packages were not setting them (as documented in 'Writing R Extensions' SS1.2).
- This has most effect where configure is used to compile parts of the package - most often
- Also used for configure.win and configure.ucrt on Windows.

Fortran flags:
- The flag -fno-optimize-sibling-calls is no longer forced for gfortran 7 and later. It should no longer be needed now using 'hidden' character-length arguments when calling BLAS/LAPACK routines from C/C++ is the default even for packages. (Unless perhaps packages call Fortran code from C/C++ without using R's headers and without allowing for these arguments.)

C-level facilities:
- The deprecated S-compatibility macros DOUBLE_* in R_ext/Constants.h (included
- The deprecated legacy typedefs of Sint and Sfloat in header R.h are no longer defined, and that header no longer includes header limits.h from C nor climits from C++.
- New macro CAD5R() is provided in Rinternals.h and used in a few places in the R sources.
- ALTREP now supports VECSXP vectors. Contributed
- The Rcomplex definition (in header R_ext/Complex.h) has been extended to prevent possible mis-compilation when interfacin with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as {1, 2}, which can b changed to {.r=1, .i=2}.
- Using the new definition from C++ depends on compiler extensions supporting C features that have not been incorporated into the C++ standards but are available in g++ and clang++: this may result in C++ compiler warnings but these have been worked around for recent versions of common compilers (GCC, Apple/LLVM clang, Intel).
- It is intended to change the inclusion of header R_ext/Complex.h

Utilities:
- R CMD check does more checking of package .Rd files, warning about invalid email addresses and (some) invalid URIs and noting empty item labels in description lists.
- R CMD check now also reports problems when reading package news in md (file NEWS.md) and (optionally) plain text (file NEWS) formats.
- _R_CHECK_TIMINGS_ defaults to a value from the environment even for R CMD check --as-cran; this allows for exceptionally fast or slow platforms.
- It now applies to checking PDF and HTML versions of the manuals, and 'checking CRAN incoming feasibility'.
- R CMD check can optionally (but included in --as-cran) check whether HTML math rendering _via_ KaTeX works for the package .Rd files.
- Non-interactive debugger invocations can be trapped
- The use of sprintf and vsprintf from C/C++ has been deprecated in macOS 13 and is a known security risk. R CMD check now reports (on all platforms) if their use is found in compiled code replace
- Where recorded at installation, R CMD check reports the C and Fortran compilers used to build R.
- It reports the OS in use (if known, as given
- It notes if a C++ standard was specified which is older than the current default: many packages have used C++11 to mean 'not C++98' - as C++11 is the minimum supported since R 4.0.0, that specification can probably be removed.
- R CMD INSTALL reports the compilers (and on macOS, the SDK) used, and this is copied to the output of R CMD check.
- Where a C++ standard is specified, it is reported.
- R CMD check's 'checking compilation flags in Makevars' has been relaxed to accept the use of flags such as -std=f2008 in PKG_FFLAGS.
- tools::buildVignettes() has a new argument skip, which is used
- New generic .AtNames() added to enable class-specific completions after @. The formerly internal function findMatches() is now exported, mainly for use in methods for .DollarNames() and.AtNames().

Deprecated and defunct:
- default.stringsAsFactors() is defunct
- Calling as.data.frame.<class>() directly (for 12 atomic classes) is going to be formally deprecated, currently activated by
- setting the environment variable_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_ to non-empty, which also happens in R CMD check --as-cran

Fixes:
- Hashed environments with sizes less than 5 can now grow
- as.character(<Rd>, deparse = TRUE) failed to re-escape curly braces in LaTeX-like text
- library() now passes its lib.loc argument when requiring Depends packages; reported (with fix) in PR#18331
- R CMD Stangle: improved message about 'Output' files.
- head(x, n) and tail(x, n) now signal an error if n is not numeric, instead of incidentally "working" sometimes returning all of x. Reported and discussed
- The "lm" method for summary() now gives the correct F-statisti when the model contains an offset. Reported in PR#18008.
- C() and `contrasts<-`() now preserve factor level names when given a function object (as opposed a function name which did preserve names). Reported in PR#17616.
- c(a = 1, 2)[[]] no longer matches 2 but rather signals a_classed_ error. Reported and analysed
- The relist() function of utils now supports NULL elements in the skeleton (PR#15854).
- ordered(levels = *) (missing x) now works analogously to factor(, ordered=TRUE); reported (with fix)
- User-defined Rd macro definitions can now span multiple lines,
- Plain-text help (tools::Rd2txt()) now preserves an initial blank line for text following description list items.
- tools::Rd2HTML() and tools::Rd2latex() no longer split arguments and value lists at Rd comments.
- tools::Rd2latex() now correctly handles optional text outside items of argument lists as well as bracketed text at the beginning of sections, e.g., value{[NULL]}.
- as.character(<POSIXt>) now behaves more in line with the method for atomic vectors such as numbers, and is no longer influenced
- defaults _not_ depending on options(). Use of as.character(*, format = .) now warns.
- Similarly, the as.character.hexmode() and *.octmode() methods also behave as good citizen methods and back compatibility option keepStr = TRUE.
- The as.POSIXlt(<POSIXlt>) and as.POSIXct(<POSIXct>) default methods now do obey their tz argument, also in this case.
- as.POSIXlt(<Date>) now does apply a tz (time zone) argument, as does as.POSIXct(); partly suggested
- as.Date.POSIXlt(x) now also works when the list components are of unequal length, aka "partially filled" or "ragged".
- expand.model.frame() looked up variables in the wrong environment when applied to models fitted without data. Reported in PR#18414.
- time() now (also) uses the ts.eps = getOption("ts.eps") argument and thus
- Printing of a factanal() result with just one factor and sort = TRUE now works regularly, fixing PR#17863
- Printing 0-length objects of class "factor", "roman", "hexmode", "octmode", "person", "bibentry", or "citation" now prints something better, one of which fixes PR#18422, reported
- Sys.timezone() queries timedatectl only if systemd is loaded; addressing a report
- The formula method of cor.test() had scoping problems when environment(formula) was not the calling environment; reported with a patch proposal
- attach() of an environment with active bindings now preserves the active bindings. Reported
- BLAS detection now works also with system-provided libraries not available as regular files. This fixes detection of the Accelerate framework on macOS since Big Sur. Reported
- download.file() gives a helpful error message in case of an invalid download.file.method option,
- Sporadic crashes of Rterm when using completion have been fixed.
- Rprof() is now more reliable. A livelock in thread initialization with too short sampling interval has been fixed on macOS. A deadlock in using the C runtime has been fixed on Windows. A potential deadlock has been prevented on Unix
- Cursor placement in Rgui now works even after a fixed-width font is selected.
- Mandatory options (options()) are now set on startup so that saving and restoring them always works (PR#18372).
- Package installation, R CMD INSTALL or install.packages(*), now parses each of the <pkg>/R/*.R files individually instead of first concatenating and then parse()ing the large resulting file. This allows parser or syntax errors to be diagnosed with correct file names and line numbers,
- This _does_ require syntactically self contained R source files now, fixing another inadvertent bug.
- predict.lm(<model with offset>) now finds the offset in the correct environment,
- getInitial(<formula>) now finds the selfStart model in the correct environment
- Fix for possible segfault when using recently-added graphics features, such as gradients, clipping paths, masks, and groups with pdf(file=NULL)
- class(m) <- class(m) no longer changes a matrix m
- packageDate(pkg) now only warns once if there is no pkg
- When ts() creates a multivariate time series, "mts", it also inherits from "array" now, and is.mts() is documented _and stricter
- Rd2txt() now preserves line breaks of verb Rd content and from duplicated cr. The former also fixes the rendering of verbatim output from Rd Sexpr in plain-text help.
- uniroot(f, interval) should no longer wrongly converge _outside_ the interval in some cases where abs(f(x)) == Inf for an x at the interval boundary,
- Vectorized alpha handling in palette functions such as in gray(), rainbow(), or hcl.colors() works correctly now,
- Formatting and print()ing of bibentry objects has dropped the deprecated citation.bibtex.max argument, such that the bibtex argument's default for print.bibentry() depends directly on the citation.bibtex.max option, whereas in format.bibentry() the option no longer applies.
- Attempting to use a character string naming a foreign function entry point in a foreign function call in a package will no signal an error if the packages has called R_forceSymbols to specify that symbols must be used.
- An error in table() could permanently set options(warn=2) promoting all subsequent warnings to errors.
- The sigma() function gave misleading results for binary GLMs. A new method for objects of class "glm" returns the square root of the estimate of the dispersion parameter using the same calculation as summary.glm().
- bs() and ns() in the (typical) case of automatic knot construction, when some of the supposedly inner knots coincide with boundary knots, now moves them inside (with a warning), building on PR#18442
- R CMD on Windows now skips the site profile with --no-site-file and --vanilla even when R_PROFILE is set (PR#18512, from Kevin Ushey).