diff --git a/r-admin/Platform-notes.html b/r-admin/Platform-notes.html index 06e6ac2..681dcca 100644 --- a/r-admin/Platform-notes.html +++ b/r-admin/Platform-notes.html @@ -308,7 +308,6 @@

Table of contents

  • C.2.1 Clang
  • C.2.2 flang
  • C.2.3 Intel compilers
  • -
  • C.2.4 ‘Classic’ Intel compilers
  • C.3 macOS
  • 8 For licence reasons this is version 5.2 of readline: for those who want a more recent version it is straightforward to compile it from its sources.

  • To build R itself from the sources with the C/C++ compilers in the Command Line Tools (or Xcode) and gfortran from the installer mentioned below, use a file config.site containing

    -
    CC=clang
    -OBJC=$CC
    -FC="/opt/gfortran/bin/gfortran -mtune=native"
    -CPPFLAGS='-isystem $LOCAL/include'
    -CXX=clang++
    +
    CC=clang
    +OBJC=$CC
    +FC="/opt/gfortran/bin/gfortran -mtune=native"
    +CPPFLAGS='-isystem $LOCAL/include'
    +CXX=clang++

    and configure by something like

    -
    ./configure -C \
    ---enable-R-shlib --enable-memory-profiling \
    ---x-includes=/opt/X11/include --x-libraries=/opt/X11/lib \
    ---with-tcl-config=$LOCAL/lib/tclConfig.sh \
    ---with-tk-config=$LOCAL/lib/tkConfig.sh \
    -PKG_CONFIG_PATH=$LOCAL/lib/pkgconfig:/usr/lib/pkgconfig
    +
    ./configure -C \
    +--enable-R-shlib --enable-memory-profiling \
    +--x-includes=/opt/X11/include --x-libraries=/opt/X11/lib \
    +--with-tcl-config=$LOCAL/lib/tclConfig.sh \
    +--with-tk-config=$LOCAL/lib/tkConfig.sh \
    +PKG_CONFIG_PATH=$LOCAL/lib/pkgconfig:/usr/lib/pkgconfig

    (See below for other options for Tcl/Tk.) For an arm64 build further flags are desirable in config.site:

    -
    CFLAGS="-falign-functions=8 -g -O2"
    -FFLAGS="-g -O2 -mmacos-version-min=11.0"
    -FCFLAGS="-g -O2 -mmacos-version-min=11.0"
    +
    CFLAGS="-falign-functions=8 -g -O2"
    +FFLAGS="-g -O2 -mmacos-version-min=11.0"
    +FCFLAGS="-g -O2 -mmacos-version-min=11.0"

    (the first flag in CFLAGS is needed to inter-work with the gfortran without segfaulting in some packages, and some builds of gfortran have targetted the current version of macOS (unlike clang, causing linker warnings).

    To install packages using compiled code one needs the Command Line Tools (or Xcode) and appropriate compilers, e.g. the C/C++ compilers from those tools and/or gfortran. Some packages have further requirements such as component pkgconfig (and to set PKG_CONFIG_PATH= as above).

    A subversion client can be obtained from https://mac.r-project.org/tools/, for example by

    -
    curl -OL https://mac.r-project.org/tools/subversion-1.14.0-darwin15.6.tar.gz
    -tar xf subversion-1.14.0-darwin15.6.tar.gz
    -sudo cp subversion-1.14.0-darwin15.6/svn $LOCAL/bin
    +
    curl -OL https://mac.r-project.org/tools/subversion-1.14.0-darwin15.6.tar.gz
    +tar xf subversion-1.14.0-darwin15.6.tar.gz
    +sudo cp subversion-1.14.0-darwin15.6/svn $LOCAL/bin

    (There also an arm64 version on that web page.)

    If building software or installing source packages with cmake (or a non-Apple make) for ‘Apple Silicon’ ensure it contains the arm64 architecture (use file to be sure). Running Apple compilers from an x86_64 executable will generate x86_64 code ….

    Updating an arm64 build may fail because of the bug described at https://openradar.appspot.com/FB8914243 but ab initio builds work. This has been far rarer since macOS 13.

    If you are using the macOS 13 SDK9, you may need to add something like -mmacos-version-min=12.0 to CFLAGS.

  • 9 ls -l xcrun -show-sdk-path in a terminal will show you which SDK is selected.

  • Linker warnings like

    -
    ld: warning: could not create compact unwind for _sort_:
    -   register 26 saved somewhere other than in frame
    -ld: warning: ld: warning:
    -   could not create compact unwind for _arcoef_: registers 23 and 24 not saved contiguously in frame
    -ld: warning: could not create compact unwind for ___emutls_get_address:
    -   registers 23 and 24 not saved contiguously in frame
    +
    ld: warning: could not create compact unwind for _sort_:
    +   register 26 saved somewhere other than in frame
    +ld: warning: ld: warning:
    +   could not create compact unwind for _arcoef_: registers 23 and 24 not saved contiguously in frame
    +ld: warning: could not create compact unwind for ___emutls_get_address:
    +   registers 23 and 24 not saved contiguously in frame

    can be ignored. These stem from compiled Fortran code, including its run-time libraries.

    The default security settings can make it difficult to install Apple packages which have not been ‘notarized’10 by Apple. And not just packages, as this has been seen for executables contained in tarballs/zipfiles (for example, for pandoc). Usually one can use Open With (Control/right/two-finger-click in Finder), then select Installer and Open if you get a further warning message.

  • 10 See https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution.

  • If you run into problems with ‘quarantine’ for tarballs downloaded in a browser, consider using curl -OL to download (as illustrated above) or xattr -c to remove extended attributes.

    @@ -599,12 +556,12 @@

    and the Cairo-based types of devices bmp jpeg, png and tiff are not the default on macOS, and much less used than the Quartz-based devices. However, the only SVG device in the R distribution, svg, is based on Cairo.

    Support for Cairo is optional and can be added in several ways, all of which need pkg-config. configure will add Cairo support if pkg-config finds package cairo unless --without-cairo is used.

    A way to statically link Cairo is by downloading and unpacking components cairo, fontconfig, freetype, pixman and zlib-system-stub (and do not have /opt/X11/lib/pkgconfig in PKG_CONFIG_PATH). Some static builds of fontconfig need libxml2 (from component xml2) and others expat, supplied by macOS but needing a file $LOCAL/lib/pkgconfig/expat.pc along the lines of

    -
    Name: expat
    -Version: 2.2.8
    -Description: expat XML parser
    -URL: http://www.libexpat.org
    -Libs: -lexpat
    -Cflags: 
    +
    Name: expat
    +Version: 2.2.8
    +Description: expat XML parser
    +URL: http://www.libexpat.org
    +Libs: -lexpat
    +Cflags: 

    Note that the list of components is liable to change: running pkg-config cairo --exists --print-errors should tell you if any others are required.

    The best font experience of Cairo graphics will be to use it in combination with Pango which will match that supported on most other Unix-alikes. configure uses pkg-config to determine if all the external software required by both Pango and Cairo is available: running pkg-config pangocairo --exists --print-errors should show if the installation suffices and if not, what is missing. At the time of writing using pre-built components cairo, fontconfig, freetype, ffi, fribidi, gettext, icu, glib, harfbuzz, pango, pcre, pixman and xml2 sufficed.

    @@ -612,15 +569,15 @@

    C.3.4 Other C/C++ compilers

    Other distributions of clang may be available from https://github.com/llvm/llvm-project/releases/ (recently only for arm64 and usually unsigned/not notarized which makes them hard to use). In particular, these include support for OpenMP which Apple clang does not. Some of these have included support for the ASAN and UBSAN sanitizers.

    Suppose one of these distributions is installed under $LOCAL/llvm. Use a file config.site containing

    -
    CC="$LOCAL/llvm/bin/clang -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
    -CXX="$LOCAL/llvm/bin/clang++ -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
    -OBJC=$CC
    -FC=$LOCAL/gfortran/bin/gfortran
    -LDFLAGS="-L$LOCAL/llvm/lib -L$LOCAL/lib"
    -R_LD_LIBRARY_PATH=$LOCAL/llvm/lib:$LOCAL/lib
    +
    CC="$LOCAL/llvm/bin/clang -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
    +CXX="$LOCAL/llvm/bin/clang++ -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
    +OBJC=$CC
    +FC=$LOCAL/gfortran/bin/gfortran
    +LDFLAGS="-L$LOCAL/llvm/lib -L$LOCAL/lib"
    +R_LD_LIBRARY_PATH=$LOCAL/llvm/lib:$LOCAL/lib

    Should the location of the SDK change (or where Xcode provides the SDK rather than the Command Line Tools), it can be found by running xcrun -show-sdk-path.

    The care to specify library paths is to ensure that the OpenMP runtime library, here $LOCAL/llvm/lib/libomp.dylib, is found when needed. If this works, you should see the line

    -
    checking whether OpenMP SIMD reduction is supported... yes
    +
    checking whether OpenMP SIMD reduction is supported... yes

    in the configure output. Also, R_LD_LIBRARY_PATH needs to be set to find the latest version of the C++ run-time libraries rather than the system ones.

    It is usually possible to build R with GCC (built from the sources, from a gfortran distribution, from Homebrew, …). When last tested11 it was not possible to use gcc to build the quartz() device, so configure --without-aqua may be required.

  • 11 with gcc 10.2.

  • It is usually possible to add some OpenMP support to the Apple clang compilers: see https://mac.r-project.org/openmp/. Note that that approach is somewhat fragile as it needs a libomp.dylib library matching the version of the compiler used—and for example at the time of writing none was offered for the current compilers in Xcode/CLT 14.3 nor 15.

    @@ -629,8 +586,8 @@

    C.3.5 Other libraries

    Pre-compiled versions of many of the Useful libraries and programs are available from https://mac.r-project.org/bin//.

    Looking at the top of /Library/Frameworks/R.framework/Resources/etc/Makeconf will show the compilers and configuration options used for the CRAN binary package for R: at the time of writing the non-default options

    -
    --enable-memory-profiling --enable-R-framework
    ---x-libraries=/opt/X11/lib --x-includes=/opt/X11/include
    +
    --enable-memory-profiling --enable-R-framework
    +--x-libraries=/opt/X11/lib --x-includes=/opt/X11/include

    were used. (--enable-R-framework implies --enable-R-shlib.)

    The main TeX implementation used by the developers is MacTeX12 (https://www.tug.org/mactex/): the full installation is about 8.5GB, but a much smaller version (‘Basic TeX’) is available at https://www.tug.org/mactex/morepackages.html to which you will need to add some packages to build R, e.g. for the 2022 version we needed to add13 helvetic, inconsolata and texinfo which brought this to about 310MB.14 TeX Live Utility (available via the MacTeX front page) provides a graphical means to manage TeX packages. These contain executables which run natively on both x86_64 and arm64.

  • 12 An essentially equivalent TeX installation can be obtained by the Unix TeX Live installation scripts.

  • 13 E.g. via tlmgr install helvetic inconsolata texinfo .

  • 14 Adding all the packages needed to check CRAN increased this to about 600MB.

  • Checking packages thoroughly requires ghostscript (part of the full MacTeX distribution or separately from https://www.tug.org/mactex/morepackages.html) and qpdf (from https://mac.r-project.org/bin//, a version of which is in the bin directory of a binary installation of R, usually /Library/Frameworks/R.framework/Resources/bin/qpdf).

    @@ -641,7 +598,7 @@

    C.3.6 Accelerate

    The Accelerate library15 can be used via the configuration option

  • 15 https://developer.apple.com/documentation/accelerate.

  • -
    --with-blas="-framework Accelerate"
    +
    --with-blas="-framework Accelerate"

    to provide potentially higher-performance versions of the BLAS and LAPACK routines.16 This includes a full LAPACK which can be used via --with-lapack: however, the version of LAPACK it contains has often been seriously old (and is not used unless --with-lapack is specified). Some CRAN builds of R can be switched17 to use Accelerate’s BLAS.

  • 16 It has been reported that for some non-Apple toolchains CPPFLAGS needed to contain -D__ACCELERATE__: not needed for clang from LLVM.

  • 17 https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#Which-BLAS-is-used-and-how-can-it-be-changed_003f

  • As from macOS 13.3, the BLAS and LAPACK libraries under the Accelerate framework are ‘now inline with reference version 3.9.1’.18 However, this has been done by naming new entry points and so only accessible via their C headers. That version can be used for BLAS calls via configure option --with-newAccelerate: it requires at least macOS 13.3 and SDK 13.3 (from Xcode/CLT 14.3). To use it for both BLAS and LAPACK calls, configure with --with-newAccelerate=lapack. These options cannot be used with others such as --with-blas and --with-lapack.

  • 18 Released 2021-04-01.

  • Threading in Accelerate is controlled by ‘Grand Central Dispatch’19 and is said not to need user control. Test nls.R in package stats has often failed with the Accelerate BLAS on Intel macOS. All versions of Accelerate show differences from the reference BLAS (and most others) in the use of NA vs NaN and a substantial number of R packages fail their checks.

  • 19 E.g., https://en.wikipedia.org/wiki/Grand_Central_Dispatch .

  • @@ -654,17 +611,17 @@

    C.3.8 Tcl/Tk headers and libraries

    If you plan to use the tcltk package for R, you will need to install a distribution of Tcl/Tk. There are two alternatives. If you use R.APP you will want to use X11-based Tcl/Tk (as used on other Unix-alikes), which is installed under $LOCAL/lib as part of the CRAN binary for R.20 This may need configure options

  • 20 Just that component can be selected from the installer for R: at the ‘Installation Type’ screen select ‘Customise’ and then just the ‘Tcl/Tk 8.6.11’ component.

  • -
    --with-tcltk=$LOCAL/lib
    +
    --with-tcltk=$LOCAL/lib

    or

    -
    --with-tcl-config=$LOCAL/lib/tclConfig.sh
    ---with-tk-config=$LOCAL/lib/tkConfig.sh
    +
    --with-tcl-config=$LOCAL/lib/tclConfig.sh
    +--with-tk-config=$LOCAL/lib/tkConfig.sh

    Note that this requires a matching XQuartz installation.

    There is also a native (‘Aqua’) version of Tcl/Tk which produces widgets in the native macOS style: this will not work with R.APP because of conflicts over the macOS menu, but for those only using command-line R this provides a much more intuitive interface to Tk for experienced Mac users. Earlier versions of macOS came with an Aqua Tcl/Tk distribution but these were often not at all recent versions of Tcl/Tk. It is better to install Tcl/Tk 8.6.x from the sources21 or a binary distribution from https://www.activestate.com/products/tcl/. For the latter, configure R with

  • 21 Configure Tk with --enable-aqua.

  • -
    --with-tcl-config=/Library/Frameworks/Tcl.framework/tclConfig.sh 
    ---with-tk-config=/Library/Frameworks/Tk.framework/tkConfig.sh
    +
    --with-tcl-config=/Library/Frameworks/Tcl.framework/tclConfig.sh 
    +--with-tk-config=/Library/Frameworks/Tk.framework/tkConfig.sh

    If you need to find out which distribution of Tk is in use at run time, use

    -
    library(tcltk)
    -tclvalue(.Tcl("tk windowingsystem"))  # "x11" or "aqua"
    +
    library(tcltk)
    +tclvalue(.Tcl("tk windowingsystem"))  # "x11" or "aqua"

    Note that some Tcl/Tk extensions only support the X11 interface: this includes Tktable and the CRAN package tkrplot.

    @@ -672,14 +629,14 @@

    macOS does not comes with an installed Java runtime (JRE) and a macOS upgrade may remove one if already installed: it is intended to be installed at first use. Check if a JRE is installed by running java -version in a Terminal window: if Java is not installed22 this should prompt you to install it.23 Builds of OpenJDK may also be available, e.g. from Adoptium, Azul or https://jdk.java.net/. We recommend you install a version with long-term support, e.g. 11 or 17 or (expected in 2023-09) 21 but not 12–16 nor 18–20 which have/had a 6-month lifetime. (Note that these sources may use unusual designations for Intel macOS builds such as x86 64-bit and x64.)

  • 22 In the unlikely event that the version reported does not start with 1.8.0, 11 or higher you need to update your Java.

  • 23 Not at the time of writing for arm64.

  • Binary distributions of R are built against a specific version (e.g. 11.0.6 or 17.0.1) of Java so sudo R CMD javareconf will likely be needed to be run before using Java-using packages.

    To see what compatible versions of Java are currently installed, run the appropriate one of

    -
    /usr/libexec/java_home -V -a x86_64
    -/usr/libexec/java_home -V -a arm64
    +
    /usr/libexec/java_home -V -a x86_64
    +/usr/libexec/java_home -V -a arm64

    If needed, set the environment variable JAVA_HOME to choose between these, both when R is built from the sources and when R CMD javareconf is run.

    Configuring and building R both looks for a JRE and for support for compiling JNI programs (used to install packages rJava and JavaGD); the latter requires a JDK (Java SDK). Most distributions of Java 9 or later are of a full JDK.

    The build process tries to fathom out what JRE/JDK to use, but it may need some help, e.g. by setting environment variable JAVA_HOME. To select a build from Adoptium set e.g.

    -
    JAVA_HOME=/Library/Java/JavaVirtualMachines/termurin-17.jdk/Contents/Home
    +
    JAVA_HOME=/Library/Java/JavaVirtualMachines/termurin-17.jdk/Contents/Home

    in config.site. For Java 17 from https://jdk.java.net/ (which is no longer available), use

    -
    JAVA_HOME=/path/to/jdk-17.jdk/Contents/Home
    +
    JAVA_HOME=/path/to/jdk-17.jdk/Contents/Home

    For an arm64 build, the earliest Java version which is officially supported is 17. The currently simplest way to install Java is from Adoptium (who call the architecture aarch64): this installs into an Apple-standard location and so works with /usr/bin/java. Other builds are available from https://www.azul.com/downloads/zulu-community/?os=macos&architecture=arm-64-bit&package=jdk and from OpenJDK at https://jdk.java.net/, for which JAVA_HOME may need to be set both when configuring R and at runtime.

    To use Java (specifically, binary package rJava) with a CRAN (x86_64) binary distribution of R on arm64 macOS, install an Intel build of a Java JRE from one of the sites linked above, then run sudo R CMD javareconf.

    Note that it is necessary to set the environment variable NOAWT to 1 to install many of the Java-using packages.

    @@ -687,19 +644,19 @@

    C.3.10 Frameworks

    The CRAN build of R is installed as a framework, which is selected by the option

    -
    ./configure --enable-R-framework
    +
    ./configure --enable-R-framework

    (This is intended to be used with an Apple toolchain: others may not support frameworks correctly but those from LLVM do.)

    It is only needed if you want to build R for use with the R.APP console, and implies --enable-R-shlib to build R as a dynamic library. This option configures R to be built and installed as a framework called R.framework. The default installation path for R.framework is /Library/Frameworks but this can be changed at configure time by specifying the flag --enable-R-framework[=DIR] (or --prefix) or at install time via

    -
    make prefix=/where/you/want/R.framework/to/go install
    +
    make prefix=/where/you/want/R.framework/to/go install

    Note that installation as a framework is non-standard (especially to a non-standard location) and Unix utilities may not support it (e.g. the pkg-config file libR.pc will be put somewhere unknown to pkg-config).

    C.3.11 Building R.app

    Building the R.APP GUI console is a separate project, using Xcode. Before compiling R.APP make sure the current version of R is installed in /Library/Frameworks/R.framework and is working at the command-line (this can be a binary install).

    The current sources can be checked out by

    -
    svn co https://svn.r-project.org/R-packages/trunk/Mac-GUI
    +
    svn co https://svn.r-project.org/R-packages/trunk/Mac-GUI

    and built by loading the R.xcodeproj project (select the R target and a suitable configuration), or from the command-line by e.g.

    -
    xcodebuild -target R -configuration Release
    +
    xcodebuild -target R -configuration Release

    See also the INSTALL file in the checkout or directly at https://svn.r-project.org/R-packages/trunk/Mac-GUI/INSTALL.

    R.APP does not need to be installed in any specific way. Building R.APP results in the R.APP bundle which appears as one R icon. This application bundle can be run anywhere and it is customary to place it in the /Applications folder.

    @@ -709,30 +666,30 @@

    CC="clang -mmacosx-version-min=11.0"
    -CXX="clang++ -mmacosx-version-min=11.0"
    -FC="/opt//gfortran/bin/gfortran -mmacosx-version-min=11.0"
    +
    CC="clang -mmacosx-version-min=11.0"
    +CXX="clang++ -mmacosx-version-min=11.0"
    +FC="/opt//gfortran/bin/gfortran -mmacosx-version-min=11.0"

    or set the environment variable

    -
    export MACOSX_DEPLOYMENT_TARGET=11.0
    +
    export MACOSX_DEPLOYMENT_TARGET=11.0
  • Using the flag -Werror=partial-availability can help trigger compilation errors on functionality not in Big Sur.

  • Check that any compiled code is not dynamically linked to libraries only on your machine, for example by using otool -L or objdump -macho -dylibs-used. This can include C++ and Fortran run-time libraries under /opt/R/x86_64/lib or /opt/R/arm64/lib: one can use install_name_tool to point these at system versions or those shipped with R, for example

    -
    install_name_tool -change /usr/local/llvm/lib/libc++.1.dylib \
    -/usr/lib/libc++.1.dylib \
    -pkg.so
    -
    -install_name_tool -change
    -/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0/libgfortran.5.dylib \
    -/Library/Frameworks/R.framework/Resources/lib/libgfortran.5.dylib \
    -pkg.so
    -
    -install_name_tool -change
    -/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0/libquadmath.0.dylib \
    -/Library/Frameworks/R.framework/Resources/lib/libquadmath.0.dylib \
    -pkg.so
    +
    install_name_tool -change /usr/local/llvm/lib/libc++.1.dylib \
    +/usr/lib/libc++.1.dylib \
    +pkg.so
    +
    +install_name_tool -change
    +/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0/libgfortran.5.dylib \
    +/Library/Frameworks/R.framework/Resources/lib/libgfortran.5.dylib \
    +pkg.so
    +
    +install_name_tool -change
    +/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0/libquadmath.0.dylib \
    +/Library/Frameworks/R.framework/Resources/lib/libquadmath.0.dylib \
    +pkg.so

    (where the details depend on the compilers and CRAN macOS R release).

  • For C++ code there is the possibility that calls will be generated to entry points not in the system /usr/lib/libc++.1.dylib. The previous step allows this to be tested against the system library on the build OS, but not against earlier ones. It may be possible to circumvent that by static linking to libc++.a and libc++abi.a by something like

    -
    SHLIB_CXXLD = /usr/local/llvm/bin/clang
    -PKG_LIBS = /usr/local/llvm/lib/libc++.a /usr/local/llvm/lib/libc++abi.a
    +
    SHLIB_CXXLD = /usr/local/llvm/bin/clang
    +PKG_LIBS = /usr/local/llvm/lib/libc++.a /usr/local/llvm/lib/libc++abi.a

    in src/Makevars. It would also be possible to static link the Fortran runtime libraries libgfortran.a and libquadmath.a should the Fortran compiler have later versions (but gfortran 8–13 all have version 5).

  • The CRAN binary packages are built with the Apple compiler on the oldest supported version of macOS, which avoids the first two and any issues with C++ libraries.

    @@ -740,13 +697,13 @@

    C.3.13 Building for Intel on arm64

    Should one want to build R for Intel on an arm64 Big Sur Mac, add the target for the C and C++ compilers:

    -
    CC="clang -arch x86_64
    -OBJC=$CC
    -CXX="clang++ -arch x86_64"
    -FC="/opt//gfortran/bin/gfortran -arch x86_64 -mtune=native -mmacosx-version-min=11"
    +
    CC="clang -arch x86_64
    +OBJC=$CC
    +CXX="clang++ -arch x86_64"
    +FC="/opt//gfortran/bin/gfortran -arch x86_64 -mtune=native -mmacosx-version-min=11"

    and install the Fortran compiler and external software described above for Intel builds (and have /opt/R/x86_64/bin before /opt/R/arm64/bin in your path).

    To set the correct architecture (which will be auto-detected as aarch64), use something like

    -
    /path/to/configure --build=x86_64-apple-darwin20
    +
    /path/to/configure --build=x86_64-apple-darwin20

    C.3.14 Installer

    diff --git a/r-admin/search.json b/r-admin/search.json index 71b6dc4..7104e46 100644 --- a/r-admin/search.json +++ b/r-admin/search.json @@ -319,7 +319,7 @@ "href": "Platform-notes.html#linux", "title": "Appendix C — Platform notes", "section": "C.2 Linux", - "text": "C.2 Linux\nLinux is the main development platform for R, so compilation from the sources is normally straightforward with the most common compilers and libraries.33 For example, glibc: other C libraries such as musl (as used by Alpine Linux) have been used but are not routinely tested.\nThis section is about the GCC compilers: gcc/gfortran/g++.\nRecall that some package management systems (such as RPM and deb) make a distinction between the user version of a package and the developer version. The latter usually has the same name but with the extension -devel or -dev: you need both versions installed. So please check the configure output to see if the expected features are detected: if for example readline is missing add the developer package. (On most systems you will also need ncurses and its developer package, although these should be dependencies of the readline package(s).) You should expect to see in the configure summary\n Interfaces supported: X11, tcltk\n External libraries: pcre2, readline, curl\n Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU\nWhen R has been installed from a binary distribution there are sometimes problems with missing components such as the Fortran compiler. Searching the R-help archives will normally reveal what is needed.\nIt seems that ix86 Linux accepts non-PIC code in shared libraries, but this is not necessarily so on other platforms, in particular on 64-bit CPUs such as x86_64. So care can be needed with BLAS libraries and when building R as a shared library to ensure that position-independent code is used in any static libraries (such as the Tcl/Tk libraries, libpng, libjpeg and zlib) which might be linked against. Fortunately these are normally built as shared libraries with the exception of the ATLAS BLAS libraries.\nThe default optimization settings chosen for CFLAGS etc are conservative. It is likely that using -mtune will result in significant performance improvements on recent CPUs: one possibility is to add -mtune=native for the best possible performance on the machine on which R is being installed. It is also possible to increase the optimization levels to -O3: however for many versions of the compilers this has caused problems in at least one CRAN package.\nDo not use -O3 with gcc 11.0 or 11.1: it mis-compiles code resulting in plausible but incorrect results. (This was seen in package MASS but has been worked around there as from version 3.1-57.)\nFor comments on ix86 builds (including 32-bit builds on x86_64) see the version of this manual for R 4.3.x.\nTo build a 64-bit version of R on ppc64 (also known as powerpc64) with gcc 4.1.1, Ei-ji Nakama used\nCC=\"gcc -m64\"\nCXX=\"gxx -m64\"\nFC=\"gfortran -m64\"\nCFLAGS=\"-mminimal-toc -fno-optimize-sibling-calls -g -O2\"\nFFLAGS=\"-mminimal-toc -fno-optimize-sibling-calls -g -O2\"\nthe additional flags being needed to resolve problems linking against libnmath.a and when linking R as a shared library.\nThe setting of the macro SAFE_FFLAGS may need some help. It should not need additional flags on platforms other than 68000 (not likely to be encountered) and ix86. For the latter, if the Fortran compiler is GNU (gfortran or possibly g77) the flags\n-msse2 -mfpmath=sse\nare added: earlier versions of R added -ffloat-store and this might still be needed if a ix86 CPU is encountered without SSE2 support. Note that it is a replacement for FFLAGS, so should include all the flags in that macro (except perhaps the optimization level).\nAdditional compilation flags can be specified for added safety/security checks. For example Fedora adds\n-Werror=format-security -Wp,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS\n-Fexceptions -fstack-protector-strong -fasynchronous-unwind-tables\n-fstack-clash-protection -fcf-protection\nto all the C, C++ and Fortran compiler flags (even though _GLIBCXX_ASSERTIONS is only for C++ in current GCC and glibc and none of these are documented for gfortran). Use of _GLIBCXX_ASSERTIONS will link abort and printf into almost all C++ code, and R CMD check --as-cran will warn.\n\nC.2.1 Clang\nR has been built with Linux ix86 and x86_64 C and C++ compilers (https://clang.llvm.org) based on the Clang front-ends, invoked by CC=clang CXX=clang++, together with gfortran. These take very similar options to the corresponding GCC compilers.\nThis has to be used in conjunction with a Fortran compiler: the configure code will remove -lgcc from FLIBS, which is needed for some versions of gfortran.\nThe current out-of-the-box default for clang++ is to use the C++ runtime from the installed g++. Using the runtime from the libc++ project (Fedora RPM libcxx-devel) via -stdlib=libc++ has also been tested.\nRecent versions have (optional when built) OpenMP support.44 This also needs the OpenMP runtime which has sometimes been distributed separately.\nThere are problems mixing clang 15.0.0 and later built as default on Linux to produce PIE code and gfortran 11 or later, which does not. One symptom is that configure does not detect FC_LEN_T, which can be overcome by setting\nFPIEFLAGS=-fPIE\nin config.site. (As from R 4.2.2 configure tries that value if it is unset.)\n\n\nC.2.2 flang\nThe name flang has been used for two projects: this is about the sub-project of LLVM which builds a Fortran compiler and runtime libraries. The compiler is currently named flang-new but has been announced to be renamed to flang when more nearly complete (and at some earlier point in its development was known as f18).\nThe version in LLVM 16 was able to build R on x86_64 Linux with\nFC=/path/to/flang-new\nwith the matching clang used as the C compiler, and the build passed make check-all. There is also support for aarch64 and ppc64le Linux, but these have not been tested with R.\n\n\nC.2.3 Intel compilers\nIn late 2020 Intel revamped their C/C++ compilers (and later their Fortran compiler) to use an LLVM back-end (and for the C/C++ compilers, a modified version of clang as the front-end). Those compilers are only for x86_64: the earlier compilers (now branded ‘Classic’) also supported ix86 and 32-bit builds on x86_64.\nThe compilers are now all under Intel’s ‘oneAPI’ brand. The revamped ones are icx, icpx and ifx; they are identified by the C/C++ macro __INTEL_LLVM_COMPILER (and do not define __INTEL_COMPILER: they also define __clang__ and __clang_major__).\nThe C++ compiler uses the system’s lidstdc++ as its runtime library rather than LLVM’s libc++.\nStandalone installers (which are free-of-charge) are available from https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html: they are also part of the oneAPI Base and HPC (for Fortran) ToolKits.\nWe tried the LLVM-based compilers in oneAPI 2024.0.0 using (the paths do differ by compiler version)\nIP=/path/to/compilers/bin/\nCC=$IP/icx\nCXX=$IP/icpx\nFC=$IP/ifx\nCFLAGS=\"-O3 -fp-model precise -Wall -Wstrict-prototypes\"\nC17FLAGS=\"-O3 -fp-model precise -Wall -Wno-strict-prototypes\"\nFFLAGS=\"-O3 -fp-model precise -warn all,noexternals\"\nFCFLAGS=\"-free -O3 -fp-model precise -warn all,noexternals\"\nCXXFLAGS=\"-O3 -fp-model precise -Wall\"\nLDFLAGS=\"-L/path/to/compilers/compiler/lib -L/usr/local/lib64\"\nbut the build segfaulted in the checks (in complex arithmetic in tests/lapack.R).\nIntel document building R with MKL: for the Intel compilers this needed something like\nMKL_LIB_PATH=/path/to/intel_mkl/mkl/lib/intel64\nexport LD_LIBRARY_PATH=\"$MKL_LIB_PATH\"\nMKL=\"-L${MKL_LIB_PATH} -lmkl_intel_lp64 -lmkl_core -lmkl_sequential\"\n./configure --with-blas=\"$MKL\" --with-lapack\nand the build passed its checks with MKL 2023.2.0 (but not 2024.0 on the hardware tested). It may also be possible to use a compiler option like -qmkl=sequential.\nOne quirk is that the Intel Fortran compilers do not accept .f95 files, only .f90 for free-format Fortran. configure adds -Tf which tells the compiler this is indeed a Fortran file (and needs to immediately precede the file name), but -free is needed to say it is free-format. Hence setting the FCFLAGS macro.\nThe compilers have many options, some of which are still under development. As the C/C++ and Fortran compilers have different origins for their front-ends, there is little consistency in their options. (The C/C++ compilers support ‘all’ clang options even if undocumented for icx/icpc, such as -Wno-strict-prototypes above, However it is unclear for which version of clang: the Intel manual suggests checking icx -help.) The C/C++ compilers support clang-style LTO: it is not clear if the Fortran one does.\nFor some versions, including 2023.2.0, all CPU times in e.g. proc.time() are reported as zero. If you see this, uncomment the INTEL_ICX_FIX setting in config.site and re-build.\nThe preferred Fortran standard for ifx can be set by one of -std90, -std95, -std03, -std08 or -std18 (and variants). However, this is documented to only affect warnings on non-standard features: the default is no such warnings.\nWarning to package maintainers: the Intel Fortran compilers interpret comments intended for Visual Fortran5 like5 as the compiler has been known on Windows.\n!DEC$ ATTRIBUTES DLLEXPORT,C,REFERENCE,ALIAS:'kdenestmlcvb' :: kdenestmlcvb\nThe DLLEXPORT gives a warning but the remainder silently generates incorrectly named entry points. Such comment lines need to be removed from code for use with R (even if using Intel Fortran on Windows).\n\n\nC.2.4 ‘Classic’ Intel compilers\nThe classic compilers were icc, icpc and ifort. They are identified by the C/C++ macro __INTEL_COMPILER.\nThe classic compilers remained available until the second half of 2023. Version 2021.10.0 (shipped as part of oneAPI 2023.2.0) was tested in July 2023 using\nIP=/path/to/compilers/bin/intel64\nCC=$IP/icc \nCXX=$IP/icpc\nFC=$IP/ifort\nCFLAGS=\"-O3 -ip -fp-model precise\"\nFFLAGS=\"-O3 -fp-model precise\"\nFCFLAGS=\"-free -O3 -fp-model precise\"\nCXXFLAGS=\"-O3 -fp-model precise\"\nLDFLAGS=\"-L/path/to/compilers/compiler/lib/intel64_lin -L/usr/local/lib64\"\nbut also segfaulted in the checks unless MKL was used. (CPU timings work with this compiler.)\nTo suppress endless warnings about deprecation, use\nCC=\"$IP/icc -diag-disable=10441\"\nicpc does not support C++23.\nThere has been only one other recent report on the use of these compilers: the rest of this section is left in case it provides helpful hints for people using them while they are still available.\nBrian Ripley used version 9.0 of the compilers for x86_64 on Fedora Core 5 with\nCC=icc\nCFLAGS=\"-g -O3 -wd188 -ip -mp\"\nFC=ifort\nFLAGS=\"-g -O3 -mp\"\nCXX=icpc\nCXXFLAGS=\"-g -O3 -mp\"\nICC_LIBS=/opt/compilers/intel/cce/9.1.039/lib\nIFC_LIBS=/opt/compilers/intel/fce/9.1.033/lib\nLDFLAGS=\"-L$ICC_LIBS -L$IFC_LIBS -L/usr/local/lib64\"\nSHLIB_CXXLD=icpc\nIt may be necessary to use CC=\"icc -std=c99\" or CC=\"icc -c99\" for C99-compliance. The flag -wd188 suppresses a large number of warnings about the enumeration type Rboolean. Because the Intel C compiler sets __GNUC__ without complete emulation of gcc, we suggest adding CPPFLAGS=-no-gcc.\nTo maintain correct IEC 60559 arithmetic you most likely need add flags to CFLAGS, FFLAGS and CXXFLAGS such as -mp (shown above) or -fp-model precise -fp-model source, depending on the compiler version.\nOthers have reported success with versions 10.x and 11.x. Bjørn-Helge Mevik reported success with version 2015.3 of the compilers, using (for a SandyBridge CPU on Centos 6.x)\nfast=\"-fp-model precise -ip -O3 -opt-mem-layout-trans=3 -xHost -mavx\"\nCC=icc\nCFLAGS=\"$fast -wd188\"\nFC=ifort\nFFLAGS=\"$fast\"\nCXX=icpc\nCXXFLAGS=\"$fast\"\nIt is possible that 32-builds need to force the use of SSE2 instructions in SAFE_FFLAGS, e.g. by\nSAFE_FFLAGS=-axsse2" + "text": "C.2 Linux\nLinux is the main development platform for R, so compilation from the sources is normally straightforward with the most common compilers and libraries.33 For example, glibc: other C libraries such as musl (as used by Alpine Linux) have been used but are not routinely tested.\nThis section is about the GCC compilers: gcc/gfortran/g++.\nRecall that some package management systems (such as RPM and deb) make a distinction between the user version of a package and the developer version. The latter usually has the same name but with the extension -devel or -dev: you need both versions installed. So please check the configure output to see if the expected features are detected: if for example readline is missing add the developer package. (On most systems you will also need ncurses and its developer package, although these should be dependencies of the readline package(s).) You should expect to see in the configure summary\n Interfaces supported: X11, tcltk\n External libraries: pcre2, readline, curl\n Additional capabilities: PNG, JPEG, TIFF, NLS, cairo, ICU\nWhen R has been installed from a binary distribution there are sometimes problems with missing components such as the Fortran compiler. Searching the R-help archives will normally reveal what is needed.\nIt seems that ix86 Linux accepts non-PIC code in shared libraries, but this is not necessarily so on other platforms, in particular on 64-bit CPUs such as x86_64. So care can be needed with BLAS libraries and when building R as a shared library to ensure that position-independent code is used in any static libraries (such as the Tcl/Tk libraries, libpng, libjpeg and zlib) which might be linked against. Fortunately these are normally built as shared libraries with the exception of the ATLAS BLAS libraries.\nThe default optimization settings chosen for CFLAGS etc are conservative. It is likely that using -mtune will result in significant performance improvements on recent CPUs: one possibility is to add -mtune=native for the best possible performance on the machine on which R is being installed. It is also possible to increase the optimization levels to -O3: however for many versions of the compilers this has caused problems in at least one CRAN package.\nDo not use -O3 with gcc 11.0 or 11.1: it mis-compiles code resulting in plausible but incorrect results. (This was seen in package MASS but has been worked around there as from version 3.1-57.)\nFor comments on ix86 builds (including 32-bit builds on x86_64) see the version of this manual for R 4.3.x.\nTo build a 64-bit version of R on ppc64 (also known as powerpc64) with gcc 4.1.1, Ei-ji Nakama used\nCC=\"gcc -m64\"\nCXX=\"gxx -m64\"\nFC=\"gfortran -m64\"\nCFLAGS=\"-mminimal-toc -fno-optimize-sibling-calls -g -O2\"\nFFLAGS=\"-mminimal-toc -fno-optimize-sibling-calls -g -O2\"\nthe additional flags being needed to resolve problems linking against libnmath.a and when linking R as a shared library.\nThe setting of the macro SAFE_FFLAGS may need some help. It should not need additional flags on platforms other than 68000 (not likely to be encountered) and ix86. For the latter, if the Fortran compiler is GNU (gfortran or possibly g77) the flags\n-msse2 -mfpmath=sse\nare added: earlier versions of R added -ffloat-store and this might still be needed if a ix86 CPU is encountered without SSE2 support. Note that it is a replacement for FFLAGS, so should include all the flags in that macro (except perhaps the optimization level).\nAdditional compilation flags can be specified for added safety/security checks. For example Fedora adds\n-Werror=format-security -Wp,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS\n-Fexceptions -fstack-protector-strong -fasynchronous-unwind-tables\n-fstack-clash-protection -fcf-protection\nto all the C, C++ and Fortran compiler flags (even though _GLIBCXX_ASSERTIONS is only for C++ in current GCC and glibc and none of these are documented for gfortran). Use of _GLIBCXX_ASSERTIONS will link abort and printf into almost all C++ code, and R CMD check --as-cran will warn.\n\nC.2.1 Clang\nR has been built with Linux ix86 and x86_64 C and C++ compilers (https://clang.llvm.org) based on the Clang front-ends, invoked by CC=clang CXX=clang++, together with gfortran. These take very similar options to the corresponding GCC compilers.\nThis has to be used in conjunction with a Fortran compiler: the configure code will remove -lgcc from FLIBS, which is needed for some versions of gfortran.\nThe current out-of-the-box default for clang++ is to use the C++ runtime from the installed g++. Using the runtime from the libc++ project (Fedora RPM libcxx-devel) via -stdlib=libc++ has also been tested.\nRecent versions have (optional when built) OpenMP support.44 This also needs the OpenMP runtime which has sometimes been distributed separately.\nThere are problems mixing clang 15.0.0 and later built as default on Linux to produce PIE code and gfortran 11 or later, which does not. One symptom is that configure does not detect FC_LEN_T, which can be overcome by setting\nFPIEFLAGS=-fPIE\nin config.site. (As from R 4.2.2 configure tries that value if it is unset.)\n\n\nC.2.2 flang\nThe name flang has been used for two projects: this is about the sub-project of LLVM which builds a Fortran compiler and runtime libraries. The compiler is currently named flang-new but has been announced to be renamed to flang when more nearly complete (and at some earlier point in its development was known as f18).\nThe version in LLVM 16 was able to build R on x86_64 Linux with\nFC=/path/to/flang-new\nwith the matching clang used as the C compiler, and the build passed make check-all. There is also support for aarch64 and ppc64le Linux, but these have not been tested with R.\n\n\nC.2.3 Intel compilers\nIn late 2020 Intel revamped their C/C++ compilers (and later their Fortran compiler) to use an LLVM back-end (and for the C/C++ compilers, a modified version of clang as the front-end). Those compilers are only for x86_64: the earlier (now called ‘Classic’) compilers were discontinued in late 2023 (and are covered in the version of this manual for R 4.3.x).\nThe compilers are now all under Intel’s ‘oneAPI’ brand. The revamped ones are icx, icpx and ifx; they are identified by the C/C++ macro __INTEL_LLVM_COMPILER (and do not define __INTEL_COMPILER: they also define __clang__ and __clang_major__).\nThe C++ compiler uses the system’s lidstdc++ as its runtime library rather than LLVM’s libc++.\nStandalone installers (which are free-of-charge) are available from https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html: they are also part of the oneAPI Base and HPC (for Fortran) ToolKits.\nWe tried the compilers in oneAPI 2024.0.0 and 2023.x.y using (the paths do differ by compiler version)\nIP=/path/to/compilers/bin/\nCC=$IP/icx\nCXX=$IP/icpx\nFC=$IP/ifx\nCFLAGS=\"-O3 -fp-model precise -Wall -Wstrict-prototypes\"\nC17FLAGS=\"-O3 -fp-model precise -Wall -Wno-strict-prototypes\"\nFFLAGS=\"-O3 -fp-model precise -warn all,noexternals\"\nFCFLAGS=\"-free -O3 -fp-model precise -warn all,noexternals\"\nCXXFLAGS=\"-O3 -fp-model precise -Wall\"\nLDFLAGS=\"-L/path/to/compilers/compiler/lib -L/usr/local/lib64\"\nbut the build segfaulted in the checks (in complex arithmetic in tests/lapack.R).\nIntel document building R with MKL: for the Intel compilers this needed something like\nMKL_LIB_PATH=/path/to/intel_mkl/mkl/lib/intel64\nexport LD_LIBRARY_PATH=\"$MKL_LIB_PATH\"\nMKL=\"-L${MKL_LIB_PATH} -lmkl_intel_lp64 -lmkl_core -lmkl_sequential\"\n./configure --with-blas=\"$MKL\" --with-lapack\nand the build passed its checks with MKL 2023.2.0 (but not 2024.0 on the hardware tested). It may also be possible to use a compiler option like -qmkl=sequential.\nOne quirk is that the Intel Fortran compilers do not accept .f95 files, only .f90, for free-format Fortran. configure adds -Tf which tells the compiler this is indeed a Fortran file (and needs to immediately precede the file name), but -free is needed to say it is free-format. Hence setting the FCFLAGS macro.\nThe compilers have many options: as the C/C++ and Fortran compilers have different origins for their front-ends, there is little consistency in their options. (The C/C++ compilers support ‘all’ clang options even if undocumented for icx/icpc, such as -Wno-strict-prototypes above, However it is unclear for which version of clang: the Intel manual suggests checking icx -help.) The C/C++ compilers support clang-style LTO: it is not clear if the Fortran one does.\nFor some versions, including 2023.2.0, all CPU times in e.g. proc.time() are reported as zero. If you see this, uncomment the INTEL_ICX_FIX setting in config.site and re-build.\nThe preferred Fortran standard for ifx can be set by one of -std90, -std95, -std03, -std08 or -std18 (and variants). However, this is documented to only affect warnings on non-standard features: the default is no such warnings.\nWarning to package maintainers: the Intel Fortran compiler interprets comments intended for Visual Fortran5 like5 as the ‘Classic’ compiler has been known on Windows.\n!DEC$ ATTRIBUTES DLLEXPORT,C,REFERENCE,ALIAS:'kdenestmlcvb' :: kdenestmlcvb\nThe DLLEXPORT gives a warning but the remainder silently generates incorrectly named entry points. Such comment lines need to be removed from code for use with R (even if using Intel Fortran on Windows)." }, { "objectID": "Platform-notes.html#macos", diff --git a/r-exts/Creating-R-packages.html b/r-exts/Creating-R-packages.html index 7fae3a4..39e4bc9 100644 --- a/r-exts/Creating-R-packages.html +++ b/r-exts/Creating-R-packages.html @@ -458,7 +458,7 @@

    The BuildVignettes logical field can be set to a false value to stop R CMD build from attempting to build the vignettes, as well as preventing8 R CMD check from testing this. This should only be used exceptionally, for example if the PDFs include large figures which are not part of the package sources (and hence only in packages which do not have an Open Source license).

  • 8 But it is checked for Open Source packages by R CMD check --as-cran.

  • The VignetteBuilder field names (in a comma-separated list) packages that provide an engine for building vignettes. These may include the current package, or ones listed in Depends, Suggests or Imports. The utils package is always implicitly appended. See Non-Sweave vignettes for details. Note that if, for example, a vignette has engine knitr::rmarkdown, then knitr provides the engine but both knitr and rmarkdown are needed for using it, so both these packages need to be in the VignetteBuilder field and at least suggested (as rmarkdown is only suggested by knitr, and hence not available automatically along with it). Many packages using knitr also need the package formatR which it suggests and so the user package needs to do so too and include this in VignetteBuilder.

    -

    If the DESCRIPTION file is not entirely in ASCII it should contain an Encoding field specifying an encoding. This is used as the encoding of the DESCRIPTION file itself and of the R and NAMESPACE files, and as the default encoding of .Rd files. The examples are assumed to be in this encoding when running R CMD check, and it is used for the encoding of the CITATION file. Only encoding names latin1, latin2 and UTF-8 are known to be portable. (Do not specify an encoding unless one is actually needed: doing so makes the package less portable. If a package has a specified encoding, you should run R CMD build etc in a locale using that encoding.)

    +

    If the DESCRIPTION file is not entirely in ASCII it should contain an Encoding field specifying an encoding. This is used as the encoding of the DESCRIPTION file itself and of the R and NAMESPACE files, and as the default encoding of .Rd files. The examples are assumed to be in this encoding when running R CMD check, and it is used for the encoding of the CITATION file. Only encoding names latin1 and and UTF-8 are known to be portable. (Do not specify an encoding unless one is actually needed: doing so makes the package less portable. If a package has a specified encoding, you should run R CMD build etc in a locale using that encoding.)

    The NeedsCompilation field should be set to "yes" if the package contains native code which needs to be compiled, otherwise "no" (when the package could be installed from source on any platform without additional tools). This is used by install.packages(type = "both") in R >= 2.15.2 on platforms where binary packages are the norm: it is normally set by R CMD build or the repository assuming compilation is required if and only if the package has a src directory.

    The OS_type field specifies the OS(es) for which the package is intended. If present, it should be one of unix or windows, and indicates that the package can only be installed on a platform with .Platform$OS.type having that value.

    The Type field specifies the type of the package: see Package types.

    diff --git a/r-exts/Function-and-variable-index.html b/r-exts/Function-and-variable-index.html index 615ef04..7ee265a 100644 --- a/r-exts/Function-and-variable-index.html +++ b/r-exts/Function-and-variable-index.html @@ -355,3107 +355,3113 @@

    Function and variable index

    -\acronym: +\abbr:   Marking text +\acronym: +  +Marking text + + + \alias:   Documenting functions - + \arguments:   Documenting functions - + \author:   Documenting functions - + \bold:   Marking text - + \cite:   Marking text - + \code:   Marking text - + \command:   Marking text - + \concept:   Indices - + \cr:   Sectioning - + \CRANpkg{pkg}:   [User-defined m acros](Writing-R-documentation-files.html#user-defined-macros) - + \deqn:   Mathematics - + \describe:   Lists and tables - + \description:   Documenting functions - + \details:   Documenting functions - + \dfn:   Marking text - + \doi{numbers}:   [User-defined m acros](Writing-R-documentation-files.html#user-defined-macros) - + \dontrun:   Documenting functions - + \dontshow:   Documenting functions - + \dots:   Insertions - + \dQuote:   Marking text - + \email:   Marking text - + \emph:   Marking text - + \enc:   Insertions - + \enumerate:   Lists and tables - + \env:   Marking text - + \eqn:   Mathematics - + \examples:   Documenting functions - + \figure:   Figures - + \file:   Marking text - + \format:   Documenting data sets - + \href:   Marking text - + \if:   Conditional text - + \ifelse:   Conditional text - + \itemize:   Lists and tables - + \kbd:   Marking text - + \keyword:   Documenting functions - + \ldots:   Insertions - + \link:   Cross-references - + \method:   Documenting functions - + \name:   Documenting functions - + \newcommand:   User-defined macros - + \note:   Documenting functions - + \option:   Marking text - + \out:   Conditional text - + \packageAuthor:   User-defined macros - + \packageDescription:   User-defined macros - + \packageDESCRIPTION:   User-defined macros - + \packageIndices:   User-defined macros - + \packageMaintainer:   User-defined macros - + \packageTitle:   User-defined macros - + \pkg:   Marking text - + \preformatted:   Marking text - + \R:   Insertions - + \RdOpts:   Dynamic pages - + \references:   Documenting functions - + \renewcommand:   User-defined macros - + \S3method:   Documenting functions - + \samp:   Marking text - + \section:   Sectioning - + \seealso:   Documenting functions - + \Sexpr:   Dynamic pages - + \source:   Documenting data sets - + \sQuote:   Marking text - + \sspace:   User-defined macros - + \strong:   Marking text - + \tabular:   Lists and tables - + \title:   Documenting functions - + \url:   Marking text - + \usage:   Documenting functions - + \value:   Documenting functions - + \var:   Marking text - + \verb:   Marking text - + A - + allocList:   Evaluating R expressions from C - + allocMatrix:   Calculating numerical derivatives - + allocVector:   Allocating storage - + any_duplicated:   Semi-internal convenience functions - + any_duplicated3:   Semi-internal convenience functions - + asChar:   Some convenience functions - + asComplex:   Some convenience functions - + asInteger:   Some convenience functions - + asLogical:   Some convenience functions - + asReal:   Some convenience functions - + AUTHORS:   Package subdirectories - + B - + bessel_i:   Mathematical functions - + bessel_j:   Mathematical functions - + bessel_k:   Mathematical functions - + bessel_y:   Mathematical functions - + beta:   Mathematical functions - + BLAS_LIBS:   Using Makevars - + browser:   Browsing - + C - + CAAR:   Calling .External - + CAD4R:   Calling .External - + CAD5R:   Calling .External - + CADDDR:   Calling .External - + CADDR:   Calling .External - + CADR:   Calling .External - + Calloc:   User-controlled memory - + CallocCharBuf:   User-controlled memory - + CAR:   Calling .External - + CDAR:   Calling .External - + CDDDR:   Calling .External - + CDDR:   Calling .External - + CDR:   Calling .External - + cgmin:   Optimization - + choose:   Mathematical functions - + CITATION:   Package subdirectories - + CITATION:   Preparing translations - + classgets:   Classes - + CleanEd:   Setting R callbacks - + coerceVector:   Details of R types - + COMPLEX:   Vector accessor functions - + CONS:   Some convenience functions - + cons:   Some convenience functions - + COPYRIGHTS:   The DESCRIPTION file - + COPYRIGHTS:   Package subdirectories - + cospi:   Numerical Utilities - + cPsort:   Utility functions - + D - + dblepr:   Printing from Fortran - + dblepr1:   Printing from Fortran - + debug:   Debugging R code - + debugger:   Debugging R code - + defineVar:   Finding and setting variables - + digamma:   Mathematical functions - + dimgets:   Attributes - + dimnamesgets:   Attributes - + dpsifn:   Mathematical functions - + dump.frames:   Debugging R code - + duplicate:   Named objects and copying - + dyn.load:   dyn.load and dyn.unload - + dyn.unload:   dyn.load and dyn.unload - + E - + elt:   Some convenience functions - + error:   Error signaling - + errorcall:   Error signaling - + eval:   Evaluating R expressions from C - + expm1:   Numerical Utilities - + export:   Specifying imports and exports - + exportClasses:   Namespaces with S4 classes and methods - + exportClassPattern:   Namespaces with S4 classes and methods - + exportMethods:   Namespaces with S4 classes and methods - + exportPattern:   Specifying imports and exports - + exportPattern:   Namespaces with S4 classes and methods - + exp_rand:   Random numbers - + F - + FALSE:   Mathematical constants - + findFun:   Evaluating R expressions from C - + findInterval:   Utility functions - + findInterval2(double*:   Utility functions - + findVar:   Finding and setting variables - + FLIBS:   Using Makevars - + fmax2:   Numerical Utilities - + fmin2:   Numerical Utilities - + fprec:   Numerical Utilities - + fpu_setup:   Setting R callbacks - + Free:   User-controlled memory - + fround:   Numerical Utilities - + fsign:   Numerical Utilities - + ftrunc:   Numerical Utilities - + G - + gammafn:   Mathematical functions - + gctorture:   Using gctorture - + GetArrayDimnames:   Attributes - + getAttrib:   Attributes - + getCharCE:   Character encoding issues - + GetColNames:   Attributes - + GetMatrixDimnames:   Attributes - + GetRNGstate:   Random numbers - + GetRowNames:   Attributes - + I - + imax2:   Numerical Utilities - + imin2:   Numerical Utilities - + import:   Specifying imports and exports - + importClassesFrom:   Namespaces with S4 classes and methods - + importFrom:   Specifying imports and exports - + importMethodsFrom:   Namespaces with S4 classes and methods - + install:   Attributes - + installChar:   Finding and setting variables - + INTEGER:   Vector accessor functions - + integr_fn:   Integration - + intpr:   Printing from Fortran - + intpr1:   Printing from Fortran - + iPsort:   Utility functions - + isArray:   Some convenience functions - + isComplex:   Details of R types - + isEnvironment:   Details of R types - + isExpression:   Details of R types - + isFactor:   Some convenience functions - + isFunction:   Some convenience functions - + isInteger:   Details of R types - + isLanguage:   Some convenience functions - + isList:   Some convenience functions - + isLogical:   Details of R types - + isMatrix:   Some convenience functions - + ISNA:   Missing and special values - + ISNA:   Missing and IEEE values - + ISNAN:   Missing and special values - + ISNAN:   Missing and IEEE values - + isNewList:   Some convenience functions - + isNull:   Details of R types - + isNumeric:   Some convenience functions - + isObject:   Some convenience functions - + isOrdered:   Some convenience functions - + isPairList:   Some convenience functions - + isPrimitive:   Some convenience functions - + isReal:   Details of R types - + isString:   Details of R types - + isSymbol:   Details of R types - + isTs:   Some convenience functions - + isUnordered:   Some convenience functions - + isVector:   Some convenience functions - + isVectorAtomic:   Some convenience functions - + isVectorList:   Some convenience functions - + L - + labelpr:   Printing from Fortran - + lang1:   Some convenience functions - + lang2:   Some convenience functions - + lang3:   Some convenience functions - + lang4:   Some convenience functions - + lang5:   Some convenience functions - + lang6:   Some convenience functions - + LAPACK_LIBS:   Using Makevars - + lastElt:   Some convenience functions - + lbeta:   Mathematical functions - + lbfgsb:   Optimization - + lchoose:   Mathematical functions - + LCONS:   Some convenience functions - + lcons:   Some convenience functions - + lgamma1p:   Numerical Utilities - + lgammafn:   Mathematical functions - + library.dynam:   Package subdirectories - + library.dynam:   dyn.load and dyn.unload - + list1:   Some convenience functions - + list2:   Some convenience functions - + list3:   Some convenience functions - + list4:   Some convenience functions - + list5:   Some convenience functions - + list6:   Some convenience functions - + log1mexp:   Numerical Utilities - + log1p:   Numerical Utilities - + log1pexp:   Numerical Utilities - + log1pmx:   Numerical Utilities - + LOGICAL:   Vector accessor functions - + logspace_add:   Numerical Utilities - + logspace_sub:   Numerical Utilities - + logspace_sum:   Numerical Utilities - + M - + MARK_NOT_MUTABLE:   Named objects and copying - + MAYBE_REFERENCED:   Named objects and copying - + MAYBE_SHARED:   Named objects and copying - + Memcpy:   User-controlled memory - + Memzero:   User-controlled memory - + mkChar:   Handling character data - + mkCharCE:   Character encoding issues - + mkCharLen:   Handling character data - + mkCharLenCE:   Character encoding issues - + mkString:   Some convenience functions - + M_E:   Mathematical constants - + M_PI:   Mathematical constants - + N - + namesgets:   Attributes - + NA_REAL:   Missing and IEEE values - + NEWS.Rd:   Package subdirectories - + nmmin:   Optimization - + norm_rand:   Random numbers - + nrows:   Transient storage allocation - + nthcdr:   Some convenience functions - + O - + OBJECTS:   Using Makevars - + OBJECTS:   Creating shared objects - + onintr:   Calling R.dll directly - + optimfn:   Optimization - + optimgr:   Optimization - + P - + pentagamma:   Mathematical functions - + PKG_CFLAGS:   Creating shared objects - + PKG_CPPFLAGS:   Creating shared objects - + PKG_CXXFLAGS:   Creating shared objects - + PKG_FCFLAGS:   Using F9x code - + PKG_FFLAGS:   Creating shared objects - + PKG_LIBS:   Creating shared objects - + PKG_OBJCFLAGS:   Creating shared objects - + PKG_OBJCXXFLAGS:   Creating shared objects - + PRINTNAME:   Calling .External - + PrintValue:   Inspecting R objects - + prompt:   Rd format - + PROTECT:   Garbage Collection - + protect:   Garbage Collection - + PROTECT_WITH_INDEX:   Garbage Collection - + psigamma:   Mathematical functions - + PutRNGstate:   Random numbers - + Q - + qsort3:   Utility functions - + qsort4:   Utility functions - + R - + R CMD build:   Building package tarballs - + R CMD check:   Checking packages - + R CMD config:   Configure and cleanup - + R CMD Rd2pdf:   Processing documentation files - + R CMD Rdconv:   Processing documentation files - + R CMD SHLIB:   Creating shared objects - + R CMD Stangle:   Processing documentation files - + R CMD Sweave:   Processing documentation files - + RAW:   Vector accessor functions - + rchkusr:   Allowing interrupts - + Rdqagi:   Integration - + Rdqags:   Integration - + REAL:   Vector accessor functions - + Realloc:   User-controlled memory - + realpr:   Printing from Fortran - + realpr1:   Printing from Fortran - + recover:   Debugging R code - + reEnc:   Character encoding issues - + REprintf:   Printing - + REPROTECT:   Garbage Collection - + REvprintf:   Printing - + revsort:   Utility functions - + Rf_endEmbeddedR:   Embedding R under Unix-alikes - + Rf_initEmbeddedR:   Embedding R under Unix-alikes - + Rf_initialize_R:   Embedding R under Unix-alikes - + Rf_KillAllDevices:   Setting R callbacks - + Rf_mainloop:   Embedding R under Unix-alikes - + Riconv:   Re-encoding - + Riconv_close:   Re-encoding - + Riconv_open:   Re-encoding - + Rprintf:   Printing - + Rprof:   Profiling R code for speed - + Rprof:   Memory statistics from Rprof - + Rprofmem:   Tracking memory allocations - + rPsort:   Utility functions - + rsort_with_index:   Utility functions - + Rtanpi:   Numerical Utilities - + run_Rmainloop:   Embedding R under Unix-alikes - + Rvprintf:   Printing - + R_addhistory:   Setting R callbacks - + R_alloc:   Transient storage allocation - + R_allocLD:   Transient storage allocation - + R_Busy:   Setting R callbacks - + R_Calloc:   User-controlled memory - + R_CheckUserInterrupt:   Allowing interrupts - + R_ChooseFile:   Setting R callbacks - + R_CleanTempDir:   Setting R callbacks - + R_CleanUp:   Setting R callbacks - + R_ClearerrConsole:   Setting R callbacks - + R_ClearExternalPtr:   External pointers and weak references - + R_compute_identical:   Semi-internal convenience functions - + R_ContinueUnwind:   Condition handling and cleanup code - + R_csort:   Utility functions - + R_dataentry:   Setting R callbacks - + R_dataviewer:   Setting R callbacks - + R_DefParams:   Calling R.dll directly - + R_DefParamsEx:   Calling R.dll directly - + R_dot_Last:   Setting R callbacks - + R_EditFile:   Setting R callbacks - + R_EditFiles:   Setting R callbacks - + R_ExpandFileName:   Utility functions - + R_ExternalPtrAddr:   External pointers and weak references - + R_ExternalPtrAddrFn:   External pointers and weak references - + R_ExternalPtrProtected:   External pointers and weak references - + R_ExternalPtrTag:   External pointers and weak references - + R_FINITE:   Missing and IEEE values - + R_FlushConsole:   Setting R callbacks - + R_forceSymbols:   Registering native routines - + R_Free:   User-controlled memory - + R_free_tmpnam:   Utility functions - + R_GetCCallable:   Linking to native routines in other packages - + R_GetCurrentEnv:   Evaluating R expressions from C - + R_GetCurrentSrcref:   Accessing source references - + R_getEmbeddingDllInfo:   Registering symbols - + R_GetSrcFilename:   Accessing source references - + R_INLINE:   Inlining C functions - + R_IsNaN:   Missing and IEEE values - + R_isort:   Utility functions - + R_LIBRARY_DIR:   Configure and cleanup - + R_loadhistory:   Setting R callbacks - + R_MakeExternalPtr:   External pointers and weak references - + R_MakeExternalPtrFn:   External pointers and weak references - + R_MakeUnwindCont:   Condition handling and cleanup code - + R_MakeWeakRef:   External pointers and weak references - + R_MakeWeakRefC:   External pointers and weak references - + R_max_col:   Utility functions - + R_NegInf:   Missing and IEEE values - + R_NewEnv:   Finding and setting variables - + R_NewPreciousMSet:   Garbage Collection - + R_orderVector:   Utility functions - + R_orderVector1:   Utility functions - + R_PACKAGE_DIR:   Configure and cleanup - + R_PACKAGE_DIR:   Configure and cleanup - + R_PACKAGE_NAME:   Configure and cleanup - + R_PACKAGE_NAME:   Configure and cleanup - + R_ParseVector:   Parsing R code from C - + R_PolledEvents:   Meshing event loops - + R_PosInf:   Missing and IEEE values - + R_pow:   Numerical Utilities - + R_pow_di:   Numerical Utilities - + R_PreserveInMSet:   Garbage Collection - + R_PreserveObject:   Garbage Collection - + R_ProcessEvents:   Calling R.dll directly - + R_ProtectWithIndex:   Garbage Collection - + R_PV:   Inspecting R objects - + R_qsort:   Utility functions - + R_qsort_I:   Utility functions - + R_qsort_int:   Utility functions - + R_qsort_int_I:   Utility functions - + R_ReadConsole:   Setting R callbacks - + R_Realloc:   User-controlled memory - + R_RegisterCCallable:   Linking to native routines in other packages - + R_RegisterCFinalizer:   External pointers and weak references - + R_RegisterCFinalizerEx:   External pointers and weak references - + R_RegisterFinalizer:   External pointers and weak references - + R_RegisterFinalizerEx:   External pointers and weak references - + R_registerRoutines:   Registering native routines - + R_ReleaseFromMSet:   Garbage Collection - + R_ReleaseObject:   Garbage Collection - + R_ReplDLLdo1:   Embedding R under Unix-alikes - + R_ReplDLLinit:   Embedding R under Unix-alikes - + R_Reprotect:   Garbage Collection - + R_ResetConsole:   Setting R callbacks - + R_rsort:   Utility functions - + R_RunExitFinalizers:   Setting R callbacks - + R_RunWeakRefFinalizer:   External pointers and weak references - + R_SaveGlobalEnv:   Setting R callbacks - + R_savehistory:   Setting R callbacks - + R_selectlist:   Setting R callbacks - + R_SetExternalPtrAddr:   External pointers and weak references - + R_SetExternalPtrProtected:   External pointers and weak references - + R_SetExternalPtrTag:   External pointers and weak references - + R_SetParams:   Calling R.dll directly - + R_setStartTime:   Calling R.dll directly - + R_set_command_line_arguments:   Calling R.dll directly - + R_ShowFiles:   Setting R callbacks - + R_ShowMessage:   Setting R callbacks - + R_Srcref:   Accessing source references - + R_Suicide:   Setting R callbacks - + R_tmpnam:   Utility functions - + R_tmpnam2:   Utility functions - + R_tryCatch:   Condition handling and cleanup code - + R_tryCatchError:   Condition handling and cleanup code - + R_unif_index:   Random numbers - + R_UnwindProtect:   Condition handling and cleanup code - + R_useDynamicSymbols:   Registering native routines - + R_Version:   Platform and version information - + R_wait_usec:   Meshing event loops - + R_WeakRefKey:   External pointers and weak references - + R_WeakRefValue:   External pointers and weak references - + R_withCallingErrorHandler:   Condition handling and cleanup code - + R_WriteConsole:   Setting R callbacks - + R_WriteConsoleEx:   Setting R callbacks - + S - + S3method:   Registering S3 methods - + SAFE_FFLAGS:   Using Makevars - + samin:   Optimization - + ScalarComplex:   Some convenience functions - + ScalarInteger:   Some convenience functions - + ScalarLogical:   Some convenience functions - + ScalarRaw:   Some convenience functions - + ScalarReal:   Some convenience functions - + ScalarString:   Some convenience functions - + setAttrib:   Attributes - + SETCAD4R:   Calling .External - + SETCADDDR:   Calling .External - + SETCADDR:   Calling .External - + SETCADR:   Calling .External - + SETCAR:   Calling .External - + SETCDR:   Calling .External - + setup_Rmainloop:   Calling R.dll directly - + setVar:   Finding and setting variables - + SET_STRING_ELT:   Handling character data - + SET_TAG:   Evaluating R expressions from C - + SET_VECTOR_ELT:   Vector accessor functions - + sign:   Numerical Utilities - + signrank_free:   Distribution functions - + sinpi:   Numerical Utilities - + str2type:   Some convenience functions - + STRING_ELT:   Handling character data - + summaryRprof:   Memory statistics from Rprof - + system:   Operating system access - + system.time:   Operating system access - + system2:   Operating system access - + S_alloc:   Transient storage allocation - + S_realloc:   Transient storage allocation - + T - + TAG:   Calling .External - + tanpi:   Numerical Utilities - + tetragamma:   Mathematical functions - + trace:   Debugging R code - + traceback:   Debugging R code - + tracemem:   Tracing copies of an object - + translateChar:   Character encoding issues - + translateCharUTF8:   Character encoding issues - + trigamma:   Mathematical functions - + TRUE:   Mathematical constants - + type2char:   Some convenience functions - + type2str:   Some convenience functions - + TYPEOF:   Calling .External - + U - + undebug:   Debugging R code - + unif_rand:   Random numbers - + UNPROTECT:   Garbage Collection - + unprotect:   Garbage Collection - + UNPROTECT_PTR:   Garbage Collection - + unprotect_ptr:   Garbage Collection - + untracemem:   Tracing copies of an object - + useDynLib:   useDynLib - + V - + VECTOR_ELT:   Vector accessor functions - + vmaxget:   Transient storage allocation - + vmaxset:   Transient storage allocation - + vmmin:   Optimization - + W - + warning:   Error signaling - + warningcall:   Error signaling - + warningcall_immediate:   Error signaling - + wilcox_free:   diff --git a/r-exts/Writing-R-documentation-files.html b/r-exts/Writing-R-documentation-files.html index 6bc4dd0..d3a30a9 100644 --- a/r-exts/Writing-R-documentation-files.html +++ b/r-exts/Writing-R-documentation-files.html @@ -687,6 +687,10 @@

    Indicate an acronym (an abbreviation written in all capital letters), such as GNU. LaTeX-like.

    +
    \abbr{abbr}
    +
    +

    Indicates an abbreviation. LaTeX-like.

    +

    diff --git a/r-exts/search.json b/r-exts/search.json index 553380a..ab0fa42 100644 --- a/r-exts/search.json +++ b/r-exts/search.json @@ -18,7 +18,7 @@ "href": "Creating-R-packages.html#package-structure", "title": "1  Creating R packages", "section": "1.1 Package structure", - "text": "1.1 Package structure\nThe sources of an R package consist of a subdirectory containing the files DESCRIPTION and NAMESPACE, and the subdirectories R, data, demo, exec, inst, man, po, src, tests, tools and vignettes (some of which can be missing, but which should not be empty). The package subdirectory may also contain files INDEX, configure, cleanup, LICENSE, LICENCE and NEWS. Other files such as INSTALL (for non-standard installation instructions), README/README.md2, or ChangeLog will be ignored by R, but may be useful to end users. The utility R CMD build may add files in a build directory (but this should not be used for other purposes).2 This seems to be commonly used for a file in ‘markdown’ format. Be aware that most users of R will not know that, nor know how to view such a file: platforms such as macOS and Windows do not have a default viewer set in their file associations. The CRAN package web pages render such files in HTML: the converter used expects the file to be encoded in UTF-8.\nExcept where specifically mentioned,3 packages should not contain Unix-style ‘hidden’ files/directories (that is, those whose name starts with a dot).3 currently, top-level files .Rbuildignore and .Rinstignore, and vignettes/.install_extras.\nThe DESCRIPTION and INDEX files are described in the subsections below. The NAMESPACE file is described in the section on Package namespaces.\nThe optional files configure and cleanup are (Bourne) shell scripts which are, respectively, executed before and (if option --clean was given) after installation on Unix-alikes, see Configure and cleanup. The analogues on Windows are configure.win and cleanup.win. Since R 4.2.0 on Windows, configure.ucrt and cleanup.ucrt are supported and take precedence over configure.win and cleanup.win. They can hence be used to provide content specific to UCRT or Rtools42 and newer, if needed, but the support for .ucrt files may be removed in future when building packages from source on the older versions of R will no longer be needed, and hence the files may be renamed back to .win.\nFor the conventions for files NEWS and ChangeLog in the GNU project see https://www.gnu.org/prep/standards/standards.html#Documentation.\nThe package subdirectory should be given the same name as the package. Because some file systems (e.g., those on Windows and by default on macOS) are not case-sensitive, to maintain portability it is strongly recommended that case distinctions not be used to distinguish different packages. For example, if you have a package named foo, do not also create a package named Foo.\nTo ensure that file names are valid across file systems and supported operating systems, the ASCII control characters as well as the characters \", *, :, /, <, >, ?, \\, and | are not allowed in file names. In addition, files with names con, prn, aux, clock$, nul, com1 to com9, and lpt1 to lpt9 after conversion to lower case and stripping possible “extensions” (e.g., lpt5.foo.bar), are disallowed. Also, file names in the same directory must not differ only by case (see the previous paragraph). In addition, the basenames of .Rd files may be used in URLs and so must be ASCII and not contain %. For maximal portability filenames should only contain only ASCII characters not excluded already (that is A-Za-z0-9._!#$%&+,;=@^(){}'[] — we exclude space as many utilities do not accept spaces in file paths): non-English alphabetic characters cannot be guaranteed to be supported in all locales. It would be good practice to avoid the shell metacharacters (){}'[]$~: ~ is also used as part of ‘8.3’ filenames on Windows. In addition, packages are normally distributed as tarballs, and these have a limit on path lengths: for maximal portability 100 bytes.\nA source package if possible should not contain binary executable files: they are not portable, and a security risk if they are of the appropriate architecture. R CMD check will warn about them4 unless they are listed (one filepath per line) in a file BinaryFiles at the top level of the package. Note that CRAN will not accept submissions containing binary files even if they are listed.4 false positives are possible, but only a handful have been seen so far.\nThe R function package.skeleton can help to create the structure for a new package: see its help page for details.\n\n1.1.1 The DESCRIPTION file\nThe DESCRIPTION file contains basic information about the package in the following format:\n\n\n\n\n\n\n\nPackage: pkgname\nVersion: 0.5-1\nDate: 2015-01-01\nTitle: My First Collection of Functions\nAuthors@R: c(person(\"Joe\", \"Developer\", role = c(\"aut\", \"cre\"),\n email = \"Joe.Developer@some.domain.net\"),\n person(\"Pat\", \"Developer\", role = \"aut\"),\n person(\"A.\", \"User\", role = \"ctb\",\n email = \"A.User@whereever.net\"))\nAuthor: Joe Developer [aut, cre],\n Pat Developer [aut],\n A. User [ctb]\nMaintainer: Joe Developer <Joe.Developer@some.domain.net>\nDepends: R (>= 3.1.0), nlme\nSuggests: MASS\nDescription: A (one paragraph) description of what\n the package does and why it may be useful.\nLicense: GPL (>= 2)\nURL: https://www.r-project.org, http://www.another.url\nBugReports: https://pkgname.bugtracker.url\n\n\n\n\nThe format is that of a version of a ‘Debian Control File’ (see the help for read.dcf and https://www.debian.org/doc/debian-policy/ch-controlfields.html: R does not require encoding in UTF-8 and does not support comments starting with #). Fields start with an ASCII name immediately followed by a colon: the value starts after the colon and a space. Continuation lines (for example, for descriptions longer than one line) start with a space or tab. Field names are case-sensitive: all those used by R are capitalized.\nFor maximal portability, the DESCRIPTION file should be written entirely in ASCII — if this is not possible it must contain an Encoding field (see below).\nSeveral optional fields take logical values: these can be specified as yes, true, no or false: capitalized values are also accepted.\nThe Package, Version, License, Description, Title, Author, and Maintainer fields are mandatory, all other fields are optional. Fields Author and Maintainer can be auto-generated from Authors@R, and may be omitted if the latter is provided: however if they are not ASCII we recommend that they are provided.\nThe mandatory Package field gives the name of the package. This should contain only (ASCII) letters, numbers and dot, have at least two characters and start with a letter and not end in a dot. If it needs explaining, this should be done in the Description field (and not the Title field).\nThe mandatory Version field gives the version of the package. This is a sequence of at least two (and usually three) non-negative integers separated by single . or - characters. The canonical form is as shown in the example, and a version such as 0.01 or 0.01.0 will be handled as if it were 0.1-0. It is not a decimal number, so for example 0.9 < 0.75 since 9 < 75.\nThe mandatory License field is discussed in the next subsection.\nThe mandatory Title field should give a short description of the package. Some package listings may truncate the title to 65 characters. It should use title case (that is, use capitals for the principal words: tools::toTitleCase can help you with this), not use any markup, not have any continuation lines, and not end in a period (unless part of …). Do not repeat the package name: it is often used prefixed by the name. Refer to other packages and external software in single quotes, and to book titles (and similar) in double quotes.\nThe mandatory Description field should give a comprehensive description of what the package does. One can use several (complete) sentences, but only one paragraph. It should be intelligible to all the intended readership (e.g. for a CRAN package to all CRAN users). It is good practice not to start with the package name, ‘This package’ or similar. As with the Title field, double quotes should be used for quotations (including titles of books and articles), and single quotes for non-English usage, including names of other packages and external software. This field should also be used for explaining the package name if necessary. URLs should be enclosed in angle brackets, e.g. <https://www.r-project.org>: see also Specifying URLs.\nThe mandatory Author field describes who wrote the package. It is a plain text field intended for human readers, but not for automatic processing (such as extracting the email addresses of all listed contributors: for that use Authors@R). Note that all significant contributors must be included: if you wrote an R wrapper for the work of others included in the src directory, you are not the sole (and maybe not even the main) author.\nThe mandatory Maintainer field should give a single name followed by a valid (RFC 2822) email address in angle brackets. It should not end in a period or comma. This field is what is reported by the maintainer function and used by bug.report. For a CRAN package it should be a person, not a mailing list and not a corporate entity: do ensure that it is valid and will remain valid for the lifetime of the package.\nNote that the display name (the part before the address in angle brackets) should be enclosed in double quotes if it contains non-alphanumeric characters such as comma or period. (The current standard, RFC 5322, allows periods but RFC 2822 did not.)\nBoth Author and Maintainer fields can be omitted if a suitable Authors@R field is given. This field can be used to provide a refined and machine-readable description of the package “authors” (in particular specifying their precise roles), via suitable R code. It should create an object of class \"person\", by either a call to person or a series of calls (one per “author”) concatenated by c(): see the example DESCRIPTION file above. The roles can include \"aut\" (author) for full authors, \"cre\" (creator) for the package maintainer, and \"ctb\" (contributor) for other contributors, \"cph\" (copyright holder, which should be the legal name for an institution or corporate body), among others. See ?person for more information. Note that no role is assumed by default. Auto-generated package citation information takes advantage of this specification. The Author and Maintainer fields are auto-generated from it if needed when building5 or installing.5 at least if this is done in a locale which matches the package encoding.\nAn optional Copyright field can be used where the copyright holder(s) are not the authors. If necessary, this can refer to an installed file: the convention is to use file inst/COPYRIGHTS.\nThe optional Date field gives the release date of the current version of the package. It is strongly recommended6 to use the yyyy-mm-dd format conforming to the ISO 8601 standard.6 and required by CRAN, so checked by R CMD check --as-cran.\nThe Depends, Imports, Suggests, Enhances, LinkingTo and Additional_repositories fields are discussed in a later subsection.\nDependencies external to the R system should be listed in the SystemRequirements field, possibly amplified in a separate README file. This includes specifying a non-default C++ standard and the need for GNU make.\nThe URL field may give a list of URLs separated by commas or whitespace, for example the homepage of the author or a page where additional material describing the software can be found. These URLs are converted to active hyperlinks in CRAN package listings. See Specifying URLs.\nThe BugReports field may contain a single URL to which bug reports about the package should be submitted. This URL will be used by bug.report instead of sending an email to the maintainer. A browser is opened for a http:// or https:// URL. To specify another email address for bug reports, use Contact instead: however bug.report will try to extract an email address (preferably from a mailto: URL or enclosed in angle brackets) from BugReports.\nBase and recommended packages (i.e., packages contained in the R source distribution or available from CRAN and recommended to be included in every binary distribution of R) have a Priority field with value base or recommended, respectively. These priorities must not be used by other packages.\nA Collate field can be used for controlling the collation order for the R code files in a package when these are processed for package installation. The default is to collate according to the C locale. If present, the collate specification must list all R code files in the package (taking possible OS-specific subdirectories into account, see Package subdirectories) as a whitespace separated list of file paths relative to the R subdirectory. Paths containing white space or quotes need to be quoted. An OS-specific collation field (Collate.unix or Collate.windows) will be used in preference to Collate.\nThe LazyData logical field controls whether the R datasets use lazy-loading. A LazyLoad field was used in versions prior to 2.14.0, but now is ignored.\nThe KeepSource logical field controls if the package code is sourced using keep.source = TRUE or FALSE: it might be needed exceptionally for a package designed to always be used with keep.source = TRUE.\nThe ByteCompile logical field controls if the package R code is to be byte-compiled on installation: the default is to byte-compile. This can be overridden by installing with flag --no-byte-compile.\nThe UseLTO logical field is used to indicate if source code in the package7 is to be compiled with Link-Time Optimization (see Using Link-time Optimization) if R was installed with --enable-lto (default true) or --enable-lto=R (default false) (or on Windows if LTO_OPT is set in MkRules). This can be overridden by the flags --use-LTO and --no-use-LTO. LTO is said to give most size and performance improvements for large and complex (heavily templated) C++ projects.7 without a src/Makefile* file.\nThe StagedInstall logical field controls if package installation is ‘staged’, that is done to a temporary location and moved to the final location when successfully completed. This field was introduced in R 3.6.0 and it true by default: it is considered to be a temporary measure which may be withdrawn in future.\nThe ZipData logical field has been ignored since R 2.13.0.\nThe Biarch logical field is used on Windows to select the INSTALL option --force-biarch for this package.\nThe BuildVignettes logical field can be set to a false value to stop R CMD build from attempting to build the vignettes, as well as preventing8 R CMD check from testing this. This should only be used exceptionally, for example if the PDFs include large figures which are not part of the package sources (and hence only in packages which do not have an Open Source license).8 But it is checked for Open Source packages by R CMD check --as-cran.\nThe VignetteBuilder field names (in a comma-separated list) packages that provide an engine for building vignettes. These may include the current package, or ones listed in Depends, Suggests or Imports. The utils package is always implicitly appended. See Non-Sweave vignettes for details. Note that if, for example, a vignette has engine knitr::rmarkdown, then knitr provides the engine but both knitr and rmarkdown are needed for using it, so both these packages need to be in the VignetteBuilder field and at least suggested (as rmarkdown is only suggested by knitr, and hence not available automatically along with it). Many packages using knitr also need the package formatR which it suggests and so the user package needs to do so too and include this in VignetteBuilder.\nIf the DESCRIPTION file is not entirely in ASCII it should contain an Encoding field specifying an encoding. This is used as the encoding of the DESCRIPTION file itself and of the R and NAMESPACE files, and as the default encoding of .Rd files. The examples are assumed to be in this encoding when running R CMD check, and it is used for the encoding of the CITATION file. Only encoding names latin1, latin2 and UTF-8 are known to be portable. (Do not specify an encoding unless one is actually needed: doing so makes the package less portable. If a package has a specified encoding, you should run R CMD build etc in a locale using that encoding.)\nThe NeedsCompilation field should be set to \"yes\" if the package contains native code which needs to be compiled, otherwise \"no\" (when the package could be installed from source on any platform without additional tools). This is used by install.packages(type = \"both\") in R >= 2.15.2 on platforms where binary packages are the norm: it is normally set by R CMD build or the repository assuming compilation is required if and only if the package has a src directory.\nThe OS_type field specifies the OS(es) for which the package is intended. If present, it should be one of unix or windows, and indicates that the package can only be installed on a platform with .Platform$OS.type having that value.\nThe Type field specifies the type of the package: see Package types.\nOne can add subject classifications for the content of the package using the fields Classification/ACM or Classification/ACM-2012 (using the Computing Classification System of the Association for Computing Machinery, https://www.acm.org/publications/class-2012; the former refers to the 1998 version), Classification/JEL (the Journal of Economic Literature Classification System, https://www.aeaweb.org/econlit/jelCodes.php, or Classification/MSC or Classification/MSC-2010 (the Mathematics Subject Classification of the American Mathematical Society, https://mathscinet.ams.org/msc/msc2010.html; the former refers to the 2000 version). The subject classifications should be comma-separated lists of the respective classification codes, e.g., Classification/ACM: G.4, H.2.8, I.5.1.\nA Language field can be used to indicate if the package documentation is not in English: this should be a comma-separated list of standard (not private use or grandfathered) IETF language tags as currently defined by RFC 5646 (https://www.rfc-editor.org/rfc/rfc5646, see also https://en.wikipedia.org/wiki/IETF_language_tag), i.e., use language subtags which in essence are 2-letter ISO 639-1 (https://en.wikipedia.org/wiki/ISO_639-1) or 3-letter ISO 639-3 (https://en.wikipedia.org/wiki/ISO_639-3) language codes.\nAn RdMacros field can be used to hold a comma-separated list of packages from which the current package will import Rd macro definitions. These package should also be listed in Imports (or Depends). The macros in these packages will be imported after the system macros, in the order listed in the RdMacros field, before any macro definitions in the current package are loaded. Macro definitions in individual .Rd files in the man directory are loaded last, and are local to later parts of that file. In case of duplicates, the last loaded definition will be used.9 Both R CMD Rd2pdf and R CMD Rdconv have an optional flag --RdMacros=pkglist. The option is also a comma-separated list of package names, and has priority over the value given in DESCRIPTION. Packages using Rd macros should depend on R 3.2.0 or later.9 Duplicate definitions may trigger a warning: see User-defined macros.\n\nNote: There should be no Built or Packaged fields, as these are added by the package management tools.\n\nThere is no restriction on the use of other fields not mentioned here (but using other capitalizations of these field names would cause confusion). Fields Note, Contact (for contacting the authors/developers10) and MailingList are in common use. Some repositories (including CRAN and R-forge) add their own fields.10 bug.report will try to extract an email address from a Contact field if there is no BugReports field.\n\n\n1.1.2 Licensing\nLicensing for a package which might be distributed is an important but potentially complex subject.\nIt is very important that you include license information! Otherwise, it may not even be legally correct for others to distribute copies of the package, let alone use it.\nThe package management tools use the concept of ‘free or open source software’ (FOSS, e.g., https://en.wikipedia.org/wiki/FOSS) licenses: the idea being that some users of R and its packages want to restrict themselves to such software. Others need to ensure that there are no restrictions stopping them using a package, e.g. forbidding commercial or military use. It is a central tenet of FOSS software that there are no restrictions on users nor usage.\nDo not use the License field for information on copyright holders: if needed, use a Copyright field.\nThe mandatory License field in the DESCRIPTION file should specify the license of the package in a standardized form. Alternatives are indicated via vertical bars. Individual specifications must be one of\n\nOne of the “standard” short specifications\nGPL-2 GPL-3 LGPL-2 LGPL-2.1 LGPL-3 AGPL-3 Artistic-2.0\nBSD_2_clause BSD_3_clause MIT\nas made available via https://www.R-project.org/Licenses/ and contained in subdirectory share/licenses of the R source or home directory.\nThe names or abbreviations of other licenses contained in the license data base in file share/licenses/license.db in the R source or home directory, possibly (for versioned licenses) followed by a version restriction of the form (op v) with op one of the comparison operators <, <=, >, >=, ==, or != and v a numeric version specification (strings of non-negative integers separated by .), possibly combined via , (see below for an example). For versioned licenses, one can also specify the name followed by the version, or combine an existing abbreviation and the version with a -.\nAbbreviations GPL and LGPL are ambiguous and usually11 taken to mean any version of the license: but it is better not to use them.\nOne of the strings file LICENSE or file LICENCE referring to a file named LICENSE or LICENCE in the package (source and installation) top-level directory.\nThe string Unlimited, meaning that there are no restrictions on distribution or use other than those imposed by relevant laws (including copyright laws).\n\n11 CRAN expands them to e.g. GPL-2 | GPL-3.Multiple licences can be specified separated by | (surrounded by spaces) in which case the user can choose any of the alternatives.\nIf a package license restricts a base license (where permitted, e.g., using GPL-3 or AGPL-3 with an attribution clause), the additional terms should be placed in file LICENSE (or LICENCE), and the string + file LICENSE (or + file LICENCE, respectively) should be appended to the corresponding individual license specification (preferably with the + surrounded by spaces). Note that several commonly used licenses do not permit restrictions: this includes GPL-2 and hence any specification which includes it.\nExamples of standardized specifications include\nLicense: GPL-2\nLicense: LGPL (>= 2.0, < 3) | Mozilla Public License\nLicense: GPL-2 | file LICENCE\nLicense: GPL (>= 2) | BSD_3_clause + file LICENSE\nLicense: Artistic-2.0 | AGPL-3 + file LICENSE\nPlease note in particular that “Public domain” is not a valid license, since it is not recognized in some jurisdictions.\nPlease ensure that the license you choose also covers any dependencies (including system dependencies) of your package: it is particularly important that any restrictions on the use of such dependencies are evident to people reading your DESCRIPTION file.\nFields License_is_FOSS and License_restricts_use may be added by repositories where information cannot be computed from the name of the license. License_is_FOSS: yes is used for licenses which are known to be FOSS, and License_restricts_use can have values yes or no if the LICENSE file is known to restrict users or usage, or known not to. These are used by, e.g., the available.packages filters.\nThe optional file LICENSE/LICENCE contains a copy of the license of the package. To avoid any confusion only include such a file if it is referred to in the License field of the DESCRIPTION file.\nWhereas you should feel free to include a license file in your source distribution, please do not arrange to install yet another copy of the GNU COPYING or COPYING.LIB files but refer to the copies on https://www.R-project.org/Licenses/ and included in the R distribution (in directory share/licenses). Since files named LICENSE or LICENCE will be installed, do not use these names for standard license files. To include comments about the licensing rather than the body of a license, use a file named something like LICENSE.note.\nA few “standard” licenses are rather license templates which need additional information to be completed via + file LICENSE (with the + surrounded by spaces)\n\n\n1.1.3 Package Dependencies\nThe Depends field gives a comma-separated list of package names which this package depends on. Those packages will be attached before the current package when library or require is called. Each package name may be optionally followed by a comment in parentheses specifying a version requirement. The comment should contain a comparison operator, whitespace and a valid version number, e.g. MASS (>= 3.1-20).\nThe Depends field can also specify a dependence on a certain version of R — e.g., if the package works only with R version 4.0.0 or later, include R (>= 4.0) in the Depends field. (As here, trailing zeroes can be dropped and it is recommended that they are.) You can also require a certain SVN revision for R-devel or R-patched, e.g. R (>= 2.14.0), R (>= r56550) requires a version later than R-devel of late July 2011 (including released versions of 2.14.0).\nIt makes no sense to declare a dependence on R without a version specification, nor on the package base: this is an R package and package base is always available.\nA package or R can appear more than once in the Depends field, for example to give upper and lower bounds on acceptable versions.\nIt is inadvisable to use a dependence on R with patchlevel (the third digit) other than zero. Doing so with packages which others depend on will cause the other packages to become unusable under earlier versions in the series, and e.g. versions 4.x.1 are widely used throughout the Northern Hemisphere academic year.\nBoth library and the R package checking facilities use this field: hence it is an error to use improper syntax or misuse the Depends field for comments on other software that might be needed. The R INSTALL facilities check if the version of R used is recent enough for the package being installed, and the list of packages which is specified will be attached (after checking version requirements) before the current package.\nThe Imports field lists packages whose namespaces are imported from (as specified in the NAMESPACE file) but which do not need to be attached. Namespaces accessed by the :: and ::: operators must be listed here, or in Suggests or Enhances (see below). Ideally this field will include all the standard packages that are used, and it is important to include S4-using packages (as their class definitions can change and the DESCRIPTION file is used to decide which packages to re-install when this happens). Packages declared in the Depends field should not also be in the Imports field. Version requirements can be specified and are checked when the namespace is loaded.\nThe Suggests field uses the same syntax as Depends and lists packages that are not necessarily needed. This includes packages used only in examples, tests or vignettes (see Writing package vignettes), and packages loaded in the body of functions. E.g., suppose an example12 from package foo uses a dataset from package bar. Then it is not necessary to have bar use foo unless one wants to execute all the examples/tests/vignettes: it is useful to have bar, but not necessary. Version requirements can be specified but should be checked by the code which uses the package.12 even one wrapped in \\donttest.\nFinally, the Enhances field lists packages “enhanced” by the package at hand, e.g., by providing methods for classes from these packages, or ways to handle objects from these packages (so several packages have Enhances: chron because they can handle datetime objects from chron even though they prefer R’s native datetime functions). Version requirements can be specified, but are currently not used. Such packages cannot be required to check the package: any tests which use them must be conditional on the presence of the package. (If your tests use e.g. a dataset from another package it should be in Suggests and not Enhances.)\nThe general rules are\n\nA package should be listed in only one of these fields.\nPackages whose namespace only is needed to load the package using library(pkgname) should be listed in the Imports field and not in the Depends field. Packages listed in import or importFrom directives in the NAMESPACE file should almost always be in Imports and not Depends.\nPackages that need to be attached to successfully load the package using library(pkgname) must be listed in the Depends field.\nAll packages that are needed13 to successfully run R CMD check on the package must be listed in one of Depends or Suggests or Imports. Packages used to run examples or tests conditionally (e.g. via if(require(pkgname))) should be listed in Suggests or Enhances. (This allows checkers to ensure that all the packages needed for a complete check are installed.)\nPackages needed to use datasets from the package should be in Imports: this includes those needed to define S4 classes used.\n\n13 This includes all packages directly called by library and require calls, as well as data obtained via data(theirdata, package = \"somepkg\") calls: R CMD check will warn about all of these. But there are subtler uses which it may not detect: e.g. if package A uses package B and makes use of functionality in package B which uses package C which package B suggests or enhances, then package C needs to be in the Suggests list for package A. Nor will undeclared uses in included files be reported, nor unconditional uses of packages listed under Enhances. R CMD check --as-cran will detect more of the subtler uses.In particular, packages providing “only” data for examples or vignettes should be listed in Suggests rather than Depends in order to make lean installations possible.\nVersion dependencies in the Depends and Imports fields are used by library when it loads the package, and install.packages checks versions for the Depends, Imports and (for dependencies = TRUE) Suggests fields.\nIt is important that the information in these fields is complete and accurate: it is for example used to compute which packages depend on an updated package and which packages can safely be installed in parallel.\nThis scheme was developed before all packages had namespaces (R 2.14.0 in October 2011), and good practice changed once that was in place.\nField Depends should nowadays be used rarely, only for packages which are intended to be put on the search path to make their facilities available to the end user (and not to the package itself): for example it makes sense that a user of package latticeExtra would want the functions of package lattice made available.\nAlmost always packages mentioned in Depends should also be imported from in the NAMESPACE file: this ensures that any needed parts of those packages are available when some other package imports the current package.\nThe Imports field should not contain packages which are not imported from (via the NAMESPACE file or :: or ::: operators), as all the packages listed in that field need to be installed for the current package to be installed. (This is checked by R CMD check.)\nR code in the package should call library or require only exceptionally. Such calls are never needed for packages listed in Depends as they will already be on the search path. It used to be common practice to use require calls for packages listed in Suggests in functions which used their functionality, but nowadays it is better to access such functionality via :: calls.\nA package that wishes to make use of header files in other packages to compile its C/C++ code needs to declare them as a comma-separated list in the field LinkingTo in the DESCRIPTION file. For example\nLinkingTo: link1, link2\nThe LinkingTo field can have a version requirement which is checked at installation.\nSpecifying a package in LinkingTo suffices if these are C/C++ headers containing source code or static linking is done at installation: the packages do not need to be (and usually should not be) listed in the Depends or Imports fields. This includes CRAN package BH and almost all users of RcppArmadillo and RcppEigen. Note that LinkingTo applies only to installation: if a packages wishes to use headers to compile code in tests or vignettes the package providing them needs to be listed in Suggests or perhaps Depends.\nFor another use of LinkingTo see Linking to native routines in other packages.\nThe Additional_repositories field is a comma-separated list of repository URLs where the packages named in the other fields may be found. It is currently used by R CMD check to check that the packages can be found, at least as source packages (which can be installed on any platform).\n\n\n1.1.4 Suggested packages\nNote that someone wanting to run the examples/tests/vignettes may not have a suggested package available (and it may not even be possible to install it for that platform). The recommendation used to be to make their use conditional via if(require(\"pkgname\")): this is OK if that conditioning is done in examples/tests/vignettes, although using if(requireNamespace(\"pkgname\")) is preferred, if possible.\nHowever, using require for conditioning in package code is not good practice as it alters the search path for the rest of the session and relies on functions in that package not being masked by other require or library calls. It is better practice to use code like\n if (requireNamespace(\"rgl\", quietly = TRUE)) {\n rgl::plot3d(...)\n } else {\n ## do something else not involving rgl.\n }\nNote the use of rgl:: as that object would not necessarily be visible (and if it is, it need not be the one from that namespace: plot3d occurs in several other packages). If the intention is to give an error if the suggested package is not available, simply use e.g. rgl::plot3d.\nIf the conditional code produces print output, function withAutoprint can be useful.\nNote that the recommendation to use suggested packages conditionally in tests does also apply to packages used to manage test suites: a notorious example was testthat which in version 1.0.0 contained illegal C++ code and hence could not be installed on standards-compliant platforms.\nSome people have assumed that a ‘recommended’ package in Suggests can safely be used unconditionally, but this is not so. (R can be installed without recommended packages, and which packages are ‘recommended’ may change.)\nAs noted above, packages in Enhances must be used conditionally and hence objects within them should always be accessed via ::.\nOn most systems, R CMD check can be run with only those packages declared in Depends and Imports by setting environment variable _R_CHECK_DEPENDS_ONLY_=true, whereas setting _R_CHECK_SUGGESTS_ONLY_=true also allows suggested packages, but not those in Enhances nor those not mentioned in the DESCRIPTION file. It is recommended that a package is checked with each of these set, as well as with neither.\nWARNING: Be extremely careful if you do things which would be run at installation time depending on whether suggested packages are available or not—this includes top-level code in R code files, .onLoad functions and the definitions of S4 classes and methods. The problem is that once a namespace of a suggested package is loaded, references to it may be captured in the installed package (most commonly in S4 methods), but the suggested package may not be available when the installed package is used (which especially for binary packages might be on a different machine). Even worse, the problems might not be confined to your package, for the namespaces of your suggested packages will also be loaded whenever any package which imports yours is installed and so may be captured there.\n\n\n1.1.5 The INDEX file\nThe optional file INDEX contains a line for each sufficiently interesting object in the package, giving its name and a description (functions such as print methods not usually called explicitly might not be included). Normally this file is missing and the corresponding information is automatically generated from the documentation sources (using tools::Rdindex()) when installing from source.\nThe file is part of the information given by library(help = pkgname).\nRather than editing this file, it is preferable to put customized information about the package into an overview help page (see Documenting packages) and/or a vignette (see Writing package vignettes).\n\n\n1.1.6 Package subdirectories\nThe R subdirectory contains R code files, only. The code files to be installed must start with an ASCII (lower or upper case) letter or digit and have one of the extensions14 .R, .S, .q, .r, or .s. We recommend using .R, as this extension seems to be not used by any other software. It should be possible to read in the files using source(), so R objects must be created by assignments. Note that there need be no connection between the name of the file and the R objects created by it. Ideally, the R code files should only directly assign R objects and definitely should not call functions with side effects such as require and options. If computations are required to create objects these can use code ‘earlier’ in the package (see the Collate field) plus functions in the Depends packages provided that the objects created do not depend on those packages except via namespace imports.14 Extensions .S and .s arise from code originally written for S(-PLUS), but are commonly used for assembler code. Extension .q was used for S, which at one time was tentatively called QPE.\nExtreme care is needed if top-level computations are made to depend on availability or not of other packages. In particular this applies to setMethods and setClass calls. Nor should they depend on the availability of external resources such as downloads.\nTwo exceptions are allowed: if the R subdirectory contains a file sysdata.rda (a saved image of one or more R objects: please use suitable compression as suggested by tools::resaveRdaFiles, and see also the SysDataCompression DESCRIPTION field.) this will be lazy-loaded into the namespace environment – this is intended for system datasets that are not intended to be user-accessible via data. Also, files ending in .in will be allowed in the R directory to allow a configure script to generate suitable files.\nOnly ASCII characters (and the control characters tab, formfeed, LF and CR) should be used in code files. Other characters are accepted in comments15, but then the comments may not be readable in e.g. a UTF-8 locale. Non-ASCII characters in object names will normally16 fail when the package is installed. Any byte will be allowed in a quoted character string but \\uxxxx escapes should be used for non-ASCII characters. However, non-ASCII character strings may not be usable in some locales and may display incorrectly in others.15 but they should be in the encoding declared in the DESCRIPTION file.16 This is true for OSes which implement the C locale: Windows’ idea of the C locale uses the WinAnsi charset.\nVarious R functions in a package can be used to initialize and clean up. See Load hooks.\nThe man subdirectory should contain (only) documentation files for the objects in the package in R documentation (Rd) format. The documentation filenames must start with an ASCII (lower or upper case) letter or digit and have the extension .Rd (the default) or .rd. Further, the names must be valid in file:// URLs, which means17 they must be entirely ASCII and not contain %. See Writing R documentation files, for more information. Note that all user-level objects in a package should be documented; if a package pkg contains user-level objects which are for “internal” use only, it should provide a file pkg-internal.Rd which documents all such objects, and clearly states that these are not meant to be called by the user. See e.g. the sources for package grid in the R distribution. Note that packages which use internal objects extensively should not export those objects from their namespace, when they do not need to be documented (see Package namespaces).17 More precisely, they can contain the English alphanumeric characters and the symbols $ - _ . + ! ' ( ) , ;  = &.\nHaving a man directory containing no documentation files may give an installation error.\nThe man subdirectory may contain a subdirectory named macros; this will contain source for user-defined Rd macros. (See User-defined macros.) These use the Rd format, but may not contain anything but macro definitions, comments and whitespace.\nThe R and man subdirectories may contain OS-specific subdirectories named unix or windows.\nThe sources and headers for the compiled code are in src, plus optionally a file Makevars or Makefile (or for use on Windows, with extension .win or .ucrt). When a package is installed using R CMD INSTALL, make is used to control compilation and linking into a shared object for loading into R. There are default make variables and rules for this (determined when R is configured and recorded in R_HOME/etcR_ARCH/Makeconf), providing support for C, C++, fixed- or free-form Fortran, Objective C and Objective C++18 with associated extensions .c, .cc or .cpp, .f, .f90 or .f95,19 .m, and .mm, respectively. We recommend using .h for headers, also for C++20 or Fortran 9x include files. (Use of extension .C for C++ is no longer supported.) Files in the src directory should not be hidden (start with a dot), and hidden files will under some versions of R be ignored.18 either or both of which may not be supported on particular platforms. Their main use is on macOS, but unfortunately recent versions of the macOS SDK have removed much of the support for Objective C v1.0 and Objective C++.19 This is not accepted by the Intel Fortran compiler.20 Using .hpp is not guaranteed to be portable.\nIt is not portable (and may not be possible at all) to mix all these languages in a single package. Because R itself uses it, we know that C and fixed-form Fortran can be used together, and mixing C, C++ and Fortran usually work for the platform’s native compilers.\nIf your code needs to depend on the platform there are certain defines which can used in C or C++. On all Windows builds (even 64-bit ones) _WIN32 will be defined: on 64-bit Windows builds also _WIN64. On macOS __APPLE__ is defined21; for an ‘Apple Silicon’ platform, test for both __APPLE__ and __arm64__.21 There is also __APPLE_CC__, but that indicates a compiler with Apple-specific features not the OS, although for historical reasons is is defined by LLVM clang. It is used in Rinlinedfuns.h.\nThe default rules can be tweaked by setting macros22 in a file src/Makevars (see Using Makevars). Note that this mechanism should be general enough to eliminate the need for a package-specific src/Makefile. If such a file is to be distributed, considerable care is needed to make it general enough to work on all R platforms. If it has any targets at all, it should have an appropriate first target named all and a (possibly empty) target clean which removes all files generated by running make (to be used by R CMD INSTALL --clean and R CMD INSTALL --preclean). There are platform-specific file names on Windows: src/Makevars.win takes precedence over src/Makevars and src/Makefile.win must be used. Since R 4.2.0, src/Makevars.ucrt takes precedence over src/Makevars.win and src/Makefile.ucrt takes precedence over src/Makefile.win. src/Makevars.ucrt and src/Makefile.ucrt will be ignored by earlier versions of R, and hence can be used to provide content specific to UCRT or Rtools42 and newer, but the support for .ucrt files may be removed in the future when building packages from source on the older versions of R will no longer be needed, and hence the files may be renamed back to .win. Some make programs require makefiles to have a complete final line, including a newline.22 the POSIX terminology, called ‘make variables’ by GNU make.\nA few packages use the src directory for purposes other than making a shared object (e.g. to create executables). Such packages should have files src/Makefile and src/Makefile.win or src/Makefile.ucrt (unless intended for only Unix-alikes or only Windows). Note that on Unix such makefiles are included after R_HOME/etc/R_ARCH/Makeconf so all the usual R macros and make rules are available – for example C compilation will by default use the C compiler and flags with which R was configured. This also applies on Windows as from R 4.3.0: packages intended to be used with earlier versions should include that file themselves.\nThe order of inclusion of makefiles for a package which does not have a src/Makefile file is\n\n\n\nUnix-alike\nWindows\n\n\n\n\nsrc/Makevars `src/Make\nvars.ucrt,src/Makevars.win`\n\n\nR_HOME/etc/R_ARCH/Makeconf R_HOME/etc/R_ARCH/Makeconf\n\n\n\nR_MAKEVARS_SITE, R_HOME/etc/R_ARCH/Makevars.site R_MAKEVARS_SITE, `R_HOME/etc/R_ARCH/Makevars\n.site`\n\n\nR_HOME/share/make/shlib.mk `R_HOME/share/make/win\nshlib.mk`\n\n\nR_MAKEVARS_USER, ~/.R/Makevars-platform, ~/.R/Makevars R_MAKEVARS_USER, ` ~/.R/Makev\nars.ucrt, ~/.R/Makevars.win64, ~/.R/Makevars.win`\n\n\n\nFor those which do, it is\n\n\n\nR_HOME/etc/R_ARCH/Makeconf R_HOME/etc/R_ARCH/Makeconf\n\n\n\nR_MAKEVARS_SITE, R_HOME/etc/R_ARCH/Makevars.site R_MAKEVARS_SITE, `R_HOME/etc/R_ARCH/Makevars\n.site`\n\n\nsrc/Makefile `src/Make\nfile.ucrt,src/Makefile.win`\n\n\nR_MAKEVARS_USER, ~/.R/Makevars-platform, ~/.R/Makevars R_MAKEVARS_USER, ` ~/.R/Makev\nars.ucrt, ~/.R/Makevars.win64, ~/.R/Makevars.win`\n\n\n\nItems in capitals are environment variables: those separated by commas are alternatives looked for in the order shown.\nIn very special cases packages may create binary files other than the shared objects/DLLs in the src directory. Such files will not be installed in a multi-architecture setting since R CMD INSTALL --libs-only is used to merge multiple sub-architectures and it only copies shared objects/DLLs. If a package wants to install other binaries (for example executable programs), it should provide an R script src/install.libs.R which will be run as part of the installation in the src build directory instead of copying the shared objects/DLLs. The script is run in a separate R environment containing the following variables: R_PACKAGE_NAME (the name of the package), R_PACKAGE_SOURCE (the path to the source directory of the package), R_PACKAGE_DIR (the path of the target installation directory of the package), R_ARCH (the arch-dependent part of the path, often empty), SHLIB_EXT (the extension of shared objects) and WINDOWS (TRUE on Windows, FALSE elsewhere). Something close to the default behavior could be replicated with the following src/install.libs.R file:\nfiles <- Sys.glob(paste0(\"*\", SHLIB_EXT))\ndest <- file.path(R_PACKAGE_DIR, paste0('libs', R_ARCH))\ndir.create(dest, recursive = TRUE, showWarnings = FALSE)\nfile.copy(files, dest, overwrite = TRUE)\nif(file.exists(\"symbols.rds\"))\n file.copy(\"symbols.rds\", dest, overwrite = TRUE)\nOn the other hand, executable programs could be installed along the lines of\nexecs <- c(\"one\", \"two\", \"three\")\nif(WINDOWS) execs <- paste0(execs, \".exe\")\nif ( any(file.exists(execs)) ) {\n dest <- file.path(R_PACKAGE_DIR, paste0('bin', R_ARCH))\n dir.create(dest, recursive = TRUE, showWarnings = FALSE)\n file.copy(execs, dest, overwrite = TRUE)\n}\nNote the use of architecture-specific subdirectories of bin where needed. (Executables should installed under a bin directory and not under libs. It is good practice to check that they can be executed as part of the installation script, so a broken package is not installed.)\nThe data subdirectory is for data files: See Data in packages.\nThe demo subdirectory is for R scripts (for running via demo()) that demonstrate some of the functionality of the package. Demos may be interactive and are not checked automatically, so if testing is desired use code in the tests directory to achieve this. The script files must start with a (lower or upper case) letter and have one of the extensions .R or .r. If present, the demo subdirectory should also have a 00Index file with one line for each demo, giving its name and a description separated by a tab or at least three spaces. (This index file is not generated automatically.) Note that a demo does not have a specified encoding and so should be an ASCII file (see Encoding issues). Function demo() will use the package encoding if there is one, but this is mainly useful for non-ASCII comments.\nThe contents of the inst subdirectory will be copied recursively to the installation directory. Subdirectories of inst should not interfere with those used by R (currently, R, data, demo, exec, libs, man, help, html and Meta, and earlier versions used latex, R-ex). The copying of the inst happens after src is built so its Makefile can create files to be installed. To exclude files from being installed, one can specify a list of exclude patterns in file .Rinstignore in the top-level source directory. These patterns should be Perl-like regular expressions (see the help for regexp in R for the precise details), one per line, to be matched case-insensitively against the file and directory paths, e.g. doc/.*[.]png$ will exclude all PNG files in inst/doc based on the extension.\nNote that with the exceptions of INDEX, LICENSE/LICENCE and NEWS, information files at the top level of the package will not be installed and so not be known to users of Windows and macOS compiled packages (and not seen by those who use R CMD INSTALL or install.packages() on the tarball). So any information files you wish an end user to see should be included in inst. Note that if the named exceptions also occur in inst, the version in inst will be that seen in the installed package.\nThings you might like to add to inst are a CITATION file for use by the citation function, and a NEWS.Rd file for use by the news function. See its help page for the specific format restrictions of the NEWS.Rd file.\nAnother file sometimes needed in inst is AUTHORS or COPYRIGHTS to specify the authors or copyright holders when this is too complex to put in the DESCRIPTION file.\nSubdirectory tests is for additional package-specific test code, similar to the specific tests that come with the R distribution. Test code can either be provided directly in a .R (or .r as from R 3.4.0) file, or via a .Rin file containing code which in turn creates the corresponding .R file (e.g., by collecting all function objects in the package and then calling them with the strangest arguments). The results of running a .R file are written to a .Rout file. If there is a corresponding23 .Rout.save file, these two are compared, with differences being reported but not causing an error. The directory tests is copied to the check area, and the tests are run with the copy as the working directory and with R_LIBS set to ensure that the copy of the package installed during testing will be found by library(pkg_name). Note that the package-specific tests are run in a vanilla R session without setting the random-number seed, so tests which use random numbers will need to set the seed to obtain reproducible results (and it can be helpful to do so in all cases, to avoid occasional failures when tests are run).23 The best way to generate such a file is to copy the .Rout from a successful run of R CMD check. If you want to generate it separately, do run R with options --vanilla --no-echo and with environment variable LANGUAGE=en set to get messages in English. Be careful not to use output with the option --timings (and note that --as-cran sets it).\nIf directory tests has a subdirectory Examples containing a file pkg-Ex.Rout.save, this is compared to the output file for running the examples when the latter are checked. Reference output should be produced without having the --timings option set (and note that --as-cran sets it).\nIf reference output is included for examples, tests or vignettes do make sure that it is fully reproducible, as it will be compared verbatim to that produced in a check run, unless the IGNORE_RDIFF markup is used. Things which trip up maintainers include displayed version numbers from loading other packages, printing numerical results to an unreproducibly high precision and printing timings. Another trap is small values which are in fact rounding error from zero: consider using zapsmall.\nSubdirectory exec could contain additional executable scripts the package needs, typically scripts for interpreters such as the shell, Perl, or Tcl. NB: only files (and not directories) under exec are installed (and those with names starting with a dot are ignored), and they are all marked as executable (mode 755, moderated by umask) on POSIX platforms. Note too that this is not suitable for executable programs since some platforms (including Windows) support multiple architectures using the same installed package directory.\nSubdirectory po is used for files related to localization: see Internationalization.\nSubdirectory tools is the preferred place for auxiliary files needed during configuration, and also for sources need to re-create scripts (e.g. M4 files for autoconf: some prefer to put those in a subdirectory m4 of tools).\n\n\n1.1.7 Data in packages\nThe data subdirectory is for data files, either to be made available via lazy-loading or for loading using data(). (The choice is made by the LazyData field in the DESCRIPTION file: the default is not to do so.) It should not be used for other data files needed by the package, and the convention has grown up to use directory inst/extdata for such files.\nData files can have one of three types as indicated by their extension: plain R code (.R or .r), tables (.tab, .txt, or .csv, see ?data for the file formats, and note that .csv is not the standard24 CSV format), or save() images (.RData or .rda). The files should not be hidden (have names starting with a dot). Note that R code should be if possible “self-sufficient” and not make use of extra functionality provided by the package, so that the data file can also be used without having to load the package or its namespace: it should run as silently as possible and not change the search() path by attaching packages or other environments.24 e.g. https://www.rfc-editor.org/rfc/rfc4180.\nImages (extensions .RData25 or .rda) can contain references to the namespaces of packages that were used to create them. Preferably there should be no such references in data files, and in any case they should only be to packages listed in the Depends and Imports fields, as otherwise it may be impossible to install the package. To check for such references, load all the images into a vanilla R session, run str() on all the datasets, and look at the output of loadedNamespaces().25 People who have trouble with case are advised to use .rda as a common error is to refer to abc.RData as abc.Rdata!\nParticular care is needed where a dataset or one of its components is of an S4 class, especially if the class is defined in a different package. First, the package containing the class definition has to be available to do useful things with the dataset, so that package must be listed in Imports or Depends (even if this gives a check warning about unused imports). Second, the definition of an S4 class can change, and often is unnoticed when in a package with a different author. So it may be wiser to use the .R form and use that to create the dataset object when needed (loading package namespaces but not attaching them by using requireNamespace(pkg, quietly = TRUE) and using pkg:: to refer to objects in the namespace).\nIf you are not using LazyData and either your data files are large or e.g., you use data/foo.R scripts to produce your data, loading your namespace, you can speed up installation by providing a file datalist in the data subdirectory. This should have one line per topic that data() will find, in the format foo if data(foo) provides foo, or foo: bar bah if data(foo) provides bar and bah. R CMD build will automatically add a datalist file to data directories of over 1Mb, using the function tools::add_datalist.\nTables (.tab, .txt, or .csv files) can be compressed by gzip, bzip2 or xz, optionally with additional extension .gz, .bz2 or .xz.\nIf your package is to be distributed, do consider the resource implications of large datasets for your users: they can make packages very slow to download and use up unwelcome amounts of storage space, as well as taking many seconds to load. It is normally best to distribute large datasets as .rda images prepared by save(, compress = TRUE) (the default). Using bzip2 or xz compression will usually reduce the size of both the package tarball and the installed package, in some cases by a factor of two or more.\nPackage tools has a couple of functions to help with data images: checkRdaFiles reports on the way the image was saved, and resaveRdaFiles will re-save with a different type of compression, including choosing the best type for that particular image.\nMany packages using LazyData will benefit from using a form of compression other than gzip in the installed lazy-loading database. This can be selected by the --data-compress option to R CMD INSTALL or by using the LazyDataCompression field in the DESCRIPTION file. Useful values are bzip2, xz and the default, gzip: value none is also accepted. The only way to discover which is best is to try them all and look at the size of the pkgname/data/Rdata.rdb file. A function to do that (quoting sizes in KB) is\nCheckLazyDataCompression <- function(pkg)\n{\n pkg_name <- sub(\"_.*\", \"\", pkg)\n lib <- tempfile(); dir.create(lib)\n zs <- c(\"gzip\", \"bzip2\", \"xz\")\n res <- integer(3); names(res) <- zs\n for (z in zs) {\n opts <- c(paste0(\"--data-compress=\", z),\n \"--no-libs\", \"--no-help\", \"--no-demo\", \"--no-exec\", \"--no-test-load\")\n install.packages(pkg, lib, INSTALL_opts = opts, repos = NULL, quiet = TRUE)\n res[z] <- file.size(file.path(lib, pkg_name, \"data\", \"Rdata.rdb\"))\n }\n ceiling(res/1024)\n}\n(applied to a source package without any LazyDataCompression field). R CMD check will warn if it finds a pkgname/data/Rdata.rdb file of more than 5MB without LazyDataCompression being set. If you see that, run CheckLazyDataCompression() and set the field – to gzip in the unlikely event26 that is the best choice.26 For all the CRAN packages tested, either gz or bzip2 provided a very substantial reduction in installed size.\nThe analogue for sysdata.rda is field SysDataCompression: the default is xz for files bigger than 1MB otherwise gzip.\nLazy-loading is not supported for very large datasets (those which when serialized exceed 2GB, the limit for the format on 32-bit platforms).\n\n\n1.1.8 Non-R scripts in packages\nCode which needs to be compiled (C, C++, Fortran …) is included in the src subdirectory and discussed elsewhere in this document.\nSubdirectory exec could be used for scripts for interpreters such as the shell, BUGS, JavaScript, Matlab, Perl, php (amap), Python or Tcl (Simile), or even R. However, it seems more common to use the inst directory, for example WriteXLS/inst/Perl, NMF/inst/m-files, RnavGraph/inst/tcl, RProtoBuf/inst/python and emdbook/inst/BUGS and gridSVG/inst/js.\nJava code is a special case: except for very small programs, .java files should be byte-compiled (to a .class file) and distributed as part of a .jar file: the conventional location for the .jar file(s) is inst/java. It is desirable (and required under an Open Source license) to make the Java source files available: this is best done in a top-level java directory in the package—the source files should not be installed.\nIf your package requires one of these interpreters or an extension then this should be declared in the SystemRequirements field of its DESCRIPTION file. (Users of Java most often do so via rJava, when depending on/importing that suffices unless there is a version requirement on Java code in the package.)\nWindows and Mac users should be aware that the Tcl extensions BWidget and Tktable (which have sometimes been included in the Windows27 and macOS R installers) are extensions and do need to be declared (and that Tktable is less widely available than it used to be, including not in the main repositories for major Linux distributions). BWidget needs to be installed by the user on other OSes. This is fairly easy to do: first find the Tcl search path:27 BWidget still is on Windows but Tktable was not in R 4.0.0.\nlibrary(tcltk)\nstrsplit(tclvalue('auto_path'), \" \")[[1]]\nthen download the sources from https://sourceforge.net/projects/tcllib/files/BWidget/ and in a terminal run something like\ntar xf bwidget-1.9.14.tar.gz\nsudo mv bwidget-1.9.14 /usr/local/lib\nsubstituting a location on the Tcl search path for /usr/local/lib if needed. (If no location on that search path is writeable, you will need to add one each time BWidget is to be used with tcltk::addTclPath().)\nTo (silently) test for the presence of Tktable one can use\nlibrary(tcltk)\nhave_tktable <- !isFALSE(suppressWarnings(tclRequire('Tktable')))\nInstalling Tktable needs a C compiler and the Tk headers (not necessarily installed with Tcl/Tk). At the time of writing the latest sources (from 2008) were available from https://sourceforge.net/projects/tktable/files/tktable/2.10/Tktable2.10.tar.gz/download, but needed patching for current Tk (8.6.11, but not 8.6.10) – a patch can be found at https://www.stats.ox.ac.uk/pub/bdr/Tktable/. For a system installation of Tk you may need to install Tktable as root as on e.g. Fedora all the locations on auto_path are owned by root.\n\n\n1.1.9 Specifying URLs\nURLs in many places in the package documentation will be converted to clickable hyperlinks in at least some of their renderings. So care is needed that their forms are correct and portable.\nThe full URL should be given, including the scheme (often http:// or https://) and a final / for references to directories.\nSpaces in URLs are not portable and how they are handled does vary by HTTP server and by client. There should be no space in the host part of an http:// URL, and spaces in the remainder should be encoded, with each space replaced by %20.\nOther characters may benefit from being encoded: see the help on URLencode().\nThe canonical URL for a CRAN package is\nhttps://cran.r-project.org/package=pkgname\nand not a version starting https://cran.r-project.org/web/packages/pkgname." + "text": "1.1 Package structure\nThe sources of an R package consist of a subdirectory containing the files DESCRIPTION and NAMESPACE, and the subdirectories R, data, demo, exec, inst, man, po, src, tests, tools and vignettes (some of which can be missing, but which should not be empty). The package subdirectory may also contain files INDEX, configure, cleanup, LICENSE, LICENCE and NEWS. Other files such as INSTALL (for non-standard installation instructions), README/README.md2, or ChangeLog will be ignored by R, but may be useful to end users. The utility R CMD build may add files in a build directory (but this should not be used for other purposes).2 This seems to be commonly used for a file in ‘markdown’ format. Be aware that most users of R will not know that, nor know how to view such a file: platforms such as macOS and Windows do not have a default viewer set in their file associations. The CRAN package web pages render such files in HTML: the converter used expects the file to be encoded in UTF-8.\nExcept where specifically mentioned,3 packages should not contain Unix-style ‘hidden’ files/directories (that is, those whose name starts with a dot).3 currently, top-level files .Rbuildignore and .Rinstignore, and vignettes/.install_extras.\nThe DESCRIPTION and INDEX files are described in the subsections below. The NAMESPACE file is described in the section on Package namespaces.\nThe optional files configure and cleanup are (Bourne) shell scripts which are, respectively, executed before and (if option --clean was given) after installation on Unix-alikes, see Configure and cleanup. The analogues on Windows are configure.win and cleanup.win. Since R 4.2.0 on Windows, configure.ucrt and cleanup.ucrt are supported and take precedence over configure.win and cleanup.win. They can hence be used to provide content specific to UCRT or Rtools42 and newer, if needed, but the support for .ucrt files may be removed in future when building packages from source on the older versions of R will no longer be needed, and hence the files may be renamed back to .win.\nFor the conventions for files NEWS and ChangeLog in the GNU project see https://www.gnu.org/prep/standards/standards.html#Documentation.\nThe package subdirectory should be given the same name as the package. Because some file systems (e.g., those on Windows and by default on macOS) are not case-sensitive, to maintain portability it is strongly recommended that case distinctions not be used to distinguish different packages. For example, if you have a package named foo, do not also create a package named Foo.\nTo ensure that file names are valid across file systems and supported operating systems, the ASCII control characters as well as the characters \", *, :, /, <, >, ?, \\, and | are not allowed in file names. In addition, files with names con, prn, aux, clock$, nul, com1 to com9, and lpt1 to lpt9 after conversion to lower case and stripping possible “extensions” (e.g., lpt5.foo.bar), are disallowed. Also, file names in the same directory must not differ only by case (see the previous paragraph). In addition, the basenames of .Rd files may be used in URLs and so must be ASCII and not contain %. For maximal portability filenames should only contain only ASCII characters not excluded already (that is A-Za-z0-9._!#$%&+,;=@^(){}'[] — we exclude space as many utilities do not accept spaces in file paths): non-English alphabetic characters cannot be guaranteed to be supported in all locales. It would be good practice to avoid the shell metacharacters (){}'[]$~: ~ is also used as part of ‘8.3’ filenames on Windows. In addition, packages are normally distributed as tarballs, and these have a limit on path lengths: for maximal portability 100 bytes.\nA source package if possible should not contain binary executable files: they are not portable, and a security risk if they are of the appropriate architecture. R CMD check will warn about them4 unless they are listed (one filepath per line) in a file BinaryFiles at the top level of the package. Note that CRAN will not accept submissions containing binary files even if they are listed.4 false positives are possible, but only a handful have been seen so far.\nThe R function package.skeleton can help to create the structure for a new package: see its help page for details.\n\n1.1.1 The DESCRIPTION file\nThe DESCRIPTION file contains basic information about the package in the following format:\n\n\n\n\n\n\n\nPackage: pkgname\nVersion: 0.5-1\nDate: 2015-01-01\nTitle: My First Collection of Functions\nAuthors@R: c(person(\"Joe\", \"Developer\", role = c(\"aut\", \"cre\"),\n email = \"Joe.Developer@some.domain.net\"),\n person(\"Pat\", \"Developer\", role = \"aut\"),\n person(\"A.\", \"User\", role = \"ctb\",\n email = \"A.User@whereever.net\"))\nAuthor: Joe Developer [aut, cre],\n Pat Developer [aut],\n A. User [ctb]\nMaintainer: Joe Developer <Joe.Developer@some.domain.net>\nDepends: R (>= 3.1.0), nlme\nSuggests: MASS\nDescription: A (one paragraph) description of what\n the package does and why it may be useful.\nLicense: GPL (>= 2)\nURL: https://www.r-project.org, http://www.another.url\nBugReports: https://pkgname.bugtracker.url\n\n\n\n\nThe format is that of a version of a ‘Debian Control File’ (see the help for read.dcf and https://www.debian.org/doc/debian-policy/ch-controlfields.html: R does not require encoding in UTF-8 and does not support comments starting with #). Fields start with an ASCII name immediately followed by a colon: the value starts after the colon and a space. Continuation lines (for example, for descriptions longer than one line) start with a space or tab. Field names are case-sensitive: all those used by R are capitalized.\nFor maximal portability, the DESCRIPTION file should be written entirely in ASCII — if this is not possible it must contain an Encoding field (see below).\nSeveral optional fields take logical values: these can be specified as yes, true, no or false: capitalized values are also accepted.\nThe Package, Version, License, Description, Title, Author, and Maintainer fields are mandatory, all other fields are optional. Fields Author and Maintainer can be auto-generated from Authors@R, and may be omitted if the latter is provided: however if they are not ASCII we recommend that they are provided.\nThe mandatory Package field gives the name of the package. This should contain only (ASCII) letters, numbers and dot, have at least two characters and start with a letter and not end in a dot. If it needs explaining, this should be done in the Description field (and not the Title field).\nThe mandatory Version field gives the version of the package. This is a sequence of at least two (and usually three) non-negative integers separated by single . or - characters. The canonical form is as shown in the example, and a version such as 0.01 or 0.01.0 will be handled as if it were 0.1-0. It is not a decimal number, so for example 0.9 < 0.75 since 9 < 75.\nThe mandatory License field is discussed in the next subsection.\nThe mandatory Title field should give a short description of the package. Some package listings may truncate the title to 65 characters. It should use title case (that is, use capitals for the principal words: tools::toTitleCase can help you with this), not use any markup, not have any continuation lines, and not end in a period (unless part of …). Do not repeat the package name: it is often used prefixed by the name. Refer to other packages and external software in single quotes, and to book titles (and similar) in double quotes.\nThe mandatory Description field should give a comprehensive description of what the package does. One can use several (complete) sentences, but only one paragraph. It should be intelligible to all the intended readership (e.g. for a CRAN package to all CRAN users). It is good practice not to start with the package name, ‘This package’ or similar. As with the Title field, double quotes should be used for quotations (including titles of books and articles), and single quotes for non-English usage, including names of other packages and external software. This field should also be used for explaining the package name if necessary. URLs should be enclosed in angle brackets, e.g. <https://www.r-project.org>: see also Specifying URLs.\nThe mandatory Author field describes who wrote the package. It is a plain text field intended for human readers, but not for automatic processing (such as extracting the email addresses of all listed contributors: for that use Authors@R). Note that all significant contributors must be included: if you wrote an R wrapper for the work of others included in the src directory, you are not the sole (and maybe not even the main) author.\nThe mandatory Maintainer field should give a single name followed by a valid (RFC 2822) email address in angle brackets. It should not end in a period or comma. This field is what is reported by the maintainer function and used by bug.report. For a CRAN package it should be a person, not a mailing list and not a corporate entity: do ensure that it is valid and will remain valid for the lifetime of the package.\nNote that the display name (the part before the address in angle brackets) should be enclosed in double quotes if it contains non-alphanumeric characters such as comma or period. (The current standard, RFC 5322, allows periods but RFC 2822 did not.)\nBoth Author and Maintainer fields can be omitted if a suitable Authors@R field is given. This field can be used to provide a refined and machine-readable description of the package “authors” (in particular specifying their precise roles), via suitable R code. It should create an object of class \"person\", by either a call to person or a series of calls (one per “author”) concatenated by c(): see the example DESCRIPTION file above. The roles can include \"aut\" (author) for full authors, \"cre\" (creator) for the package maintainer, and \"ctb\" (contributor) for other contributors, \"cph\" (copyright holder, which should be the legal name for an institution or corporate body), among others. See ?person for more information. Note that no role is assumed by default. Auto-generated package citation information takes advantage of this specification. The Author and Maintainer fields are auto-generated from it if needed when building5 or installing.5 at least if this is done in a locale which matches the package encoding.\nAn optional Copyright field can be used where the copyright holder(s) are not the authors. If necessary, this can refer to an installed file: the convention is to use file inst/COPYRIGHTS.\nThe optional Date field gives the release date of the current version of the package. It is strongly recommended6 to use the yyyy-mm-dd format conforming to the ISO 8601 standard.6 and required by CRAN, so checked by R CMD check --as-cran.\nThe Depends, Imports, Suggests, Enhances, LinkingTo and Additional_repositories fields are discussed in a later subsection.\nDependencies external to the R system should be listed in the SystemRequirements field, possibly amplified in a separate README file. This includes specifying a non-default C++ standard and the need for GNU make.\nThe URL field may give a list of URLs separated by commas or whitespace, for example the homepage of the author or a page where additional material describing the software can be found. These URLs are converted to active hyperlinks in CRAN package listings. See Specifying URLs.\nThe BugReports field may contain a single URL to which bug reports about the package should be submitted. This URL will be used by bug.report instead of sending an email to the maintainer. A browser is opened for a http:// or https:// URL. To specify another email address for bug reports, use Contact instead: however bug.report will try to extract an email address (preferably from a mailto: URL or enclosed in angle brackets) from BugReports.\nBase and recommended packages (i.e., packages contained in the R source distribution or available from CRAN and recommended to be included in every binary distribution of R) have a Priority field with value base or recommended, respectively. These priorities must not be used by other packages.\nA Collate field can be used for controlling the collation order for the R code files in a package when these are processed for package installation. The default is to collate according to the C locale. If present, the collate specification must list all R code files in the package (taking possible OS-specific subdirectories into account, see Package subdirectories) as a whitespace separated list of file paths relative to the R subdirectory. Paths containing white space or quotes need to be quoted. An OS-specific collation field (Collate.unix or Collate.windows) will be used in preference to Collate.\nThe LazyData logical field controls whether the R datasets use lazy-loading. A LazyLoad field was used in versions prior to 2.14.0, but now is ignored.\nThe KeepSource logical field controls if the package code is sourced using keep.source = TRUE or FALSE: it might be needed exceptionally for a package designed to always be used with keep.source = TRUE.\nThe ByteCompile logical field controls if the package R code is to be byte-compiled on installation: the default is to byte-compile. This can be overridden by installing with flag --no-byte-compile.\nThe UseLTO logical field is used to indicate if source code in the package7 is to be compiled with Link-Time Optimization (see Using Link-time Optimization) if R was installed with --enable-lto (default true) or --enable-lto=R (default false) (or on Windows if LTO_OPT is set in MkRules). This can be overridden by the flags --use-LTO and --no-use-LTO. LTO is said to give most size and performance improvements for large and complex (heavily templated) C++ projects.7 without a src/Makefile* file.\nThe StagedInstall logical field controls if package installation is ‘staged’, that is done to a temporary location and moved to the final location when successfully completed. This field was introduced in R 3.6.0 and it true by default: it is considered to be a temporary measure which may be withdrawn in future.\nThe ZipData logical field has been ignored since R 2.13.0.\nThe Biarch logical field is used on Windows to select the INSTALL option --force-biarch for this package.\nThe BuildVignettes logical field can be set to a false value to stop R CMD build from attempting to build the vignettes, as well as preventing8 R CMD check from testing this. This should only be used exceptionally, for example if the PDFs include large figures which are not part of the package sources (and hence only in packages which do not have an Open Source license).8 But it is checked for Open Source packages by R CMD check --as-cran.\nThe VignetteBuilder field names (in a comma-separated list) packages that provide an engine for building vignettes. These may include the current package, or ones listed in Depends, Suggests or Imports. The utils package is always implicitly appended. See Non-Sweave vignettes for details. Note that if, for example, a vignette has engine knitr::rmarkdown, then knitr provides the engine but both knitr and rmarkdown are needed for using it, so both these packages need to be in the VignetteBuilder field and at least suggested (as rmarkdown is only suggested by knitr, and hence not available automatically along with it). Many packages using knitr also need the package formatR which it suggests and so the user package needs to do so too and include this in VignetteBuilder.\nIf the DESCRIPTION file is not entirely in ASCII it should contain an Encoding field specifying an encoding. This is used as the encoding of the DESCRIPTION file itself and of the R and NAMESPACE files, and as the default encoding of .Rd files. The examples are assumed to be in this encoding when running R CMD check, and it is used for the encoding of the CITATION file. Only encoding names latin1 and and UTF-8 are known to be portable. (Do not specify an encoding unless one is actually needed: doing so makes the package less portable. If a package has a specified encoding, you should run R CMD build etc in a locale using that encoding.)\nThe NeedsCompilation field should be set to \"yes\" if the package contains native code which needs to be compiled, otherwise \"no\" (when the package could be installed from source on any platform without additional tools). This is used by install.packages(type = \"both\") in R >= 2.15.2 on platforms where binary packages are the norm: it is normally set by R CMD build or the repository assuming compilation is required if and only if the package has a src directory.\nThe OS_type field specifies the OS(es) for which the package is intended. If present, it should be one of unix or windows, and indicates that the package can only be installed on a platform with .Platform$OS.type having that value.\nThe Type field specifies the type of the package: see Package types.\nOne can add subject classifications for the content of the package using the fields Classification/ACM or Classification/ACM-2012 (using the Computing Classification System of the Association for Computing Machinery, https://www.acm.org/publications/class-2012; the former refers to the 1998 version), Classification/JEL (the Journal of Economic Literature Classification System, https://www.aeaweb.org/econlit/jelCodes.php, or Classification/MSC or Classification/MSC-2010 (the Mathematics Subject Classification of the American Mathematical Society, https://mathscinet.ams.org/msc/msc2010.html; the former refers to the 2000 version). The subject classifications should be comma-separated lists of the respective classification codes, e.g., Classification/ACM: G.4, H.2.8, I.5.1.\nA Language field can be used to indicate if the package documentation is not in English: this should be a comma-separated list of standard (not private use or grandfathered) IETF language tags as currently defined by RFC 5646 (https://www.rfc-editor.org/rfc/rfc5646, see also https://en.wikipedia.org/wiki/IETF_language_tag), i.e., use language subtags which in essence are 2-letter ISO 639-1 (https://en.wikipedia.org/wiki/ISO_639-1) or 3-letter ISO 639-3 (https://en.wikipedia.org/wiki/ISO_639-3) language codes.\nAn RdMacros field can be used to hold a comma-separated list of packages from which the current package will import Rd macro definitions. These package should also be listed in Imports (or Depends). The macros in these packages will be imported after the system macros, in the order listed in the RdMacros field, before any macro definitions in the current package are loaded. Macro definitions in individual .Rd files in the man directory are loaded last, and are local to later parts of that file. In case of duplicates, the last loaded definition will be used.9 Both R CMD Rd2pdf and R CMD Rdconv have an optional flag --RdMacros=pkglist. The option is also a comma-separated list of package names, and has priority over the value given in DESCRIPTION. Packages using Rd macros should depend on R 3.2.0 or later.9 Duplicate definitions may trigger a warning: see User-defined macros.\n\nNote: There should be no Built or Packaged fields, as these are added by the package management tools.\n\nThere is no restriction on the use of other fields not mentioned here (but using other capitalizations of these field names would cause confusion). Fields Note, Contact (for contacting the authors/developers10) and MailingList are in common use. Some repositories (including CRAN and R-forge) add their own fields.10 bug.report will try to extract an email address from a Contact field if there is no BugReports field.\n\n\n1.1.2 Licensing\nLicensing for a package which might be distributed is an important but potentially complex subject.\nIt is very important that you include license information! Otherwise, it may not even be legally correct for others to distribute copies of the package, let alone use it.\nThe package management tools use the concept of ‘free or open source software’ (FOSS, e.g., https://en.wikipedia.org/wiki/FOSS) licenses: the idea being that some users of R and its packages want to restrict themselves to such software. Others need to ensure that there are no restrictions stopping them using a package, e.g. forbidding commercial or military use. It is a central tenet of FOSS software that there are no restrictions on users nor usage.\nDo not use the License field for information on copyright holders: if needed, use a Copyright field.\nThe mandatory License field in the DESCRIPTION file should specify the license of the package in a standardized form. Alternatives are indicated via vertical bars. Individual specifications must be one of\n\nOne of the “standard” short specifications\nGPL-2 GPL-3 LGPL-2 LGPL-2.1 LGPL-3 AGPL-3 Artistic-2.0\nBSD_2_clause BSD_3_clause MIT\nas made available via https://www.R-project.org/Licenses/ and contained in subdirectory share/licenses of the R source or home directory.\nThe names or abbreviations of other licenses contained in the license data base in file share/licenses/license.db in the R source or home directory, possibly (for versioned licenses) followed by a version restriction of the form (op v) with op one of the comparison operators <, <=, >, >=, ==, or != and v a numeric version specification (strings of non-negative integers separated by .), possibly combined via , (see below for an example). For versioned licenses, one can also specify the name followed by the version, or combine an existing abbreviation and the version with a -.\nAbbreviations GPL and LGPL are ambiguous and usually11 taken to mean any version of the license: but it is better not to use them.\nOne of the strings file LICENSE or file LICENCE referring to a file named LICENSE or LICENCE in the package (source and installation) top-level directory.\nThe string Unlimited, meaning that there are no restrictions on distribution or use other than those imposed by relevant laws (including copyright laws).\n\n11 CRAN expands them to e.g. GPL-2 | GPL-3.Multiple licences can be specified separated by | (surrounded by spaces) in which case the user can choose any of the alternatives.\nIf a package license restricts a base license (where permitted, e.g., using GPL-3 or AGPL-3 with an attribution clause), the additional terms should be placed in file LICENSE (or LICENCE), and the string + file LICENSE (or + file LICENCE, respectively) should be appended to the corresponding individual license specification (preferably with the + surrounded by spaces). Note that several commonly used licenses do not permit restrictions: this includes GPL-2 and hence any specification which includes it.\nExamples of standardized specifications include\nLicense: GPL-2\nLicense: LGPL (>= 2.0, < 3) | Mozilla Public License\nLicense: GPL-2 | file LICENCE\nLicense: GPL (>= 2) | BSD_3_clause + file LICENSE\nLicense: Artistic-2.0 | AGPL-3 + file LICENSE\nPlease note in particular that “Public domain” is not a valid license, since it is not recognized in some jurisdictions.\nPlease ensure that the license you choose also covers any dependencies (including system dependencies) of your package: it is particularly important that any restrictions on the use of such dependencies are evident to people reading your DESCRIPTION file.\nFields License_is_FOSS and License_restricts_use may be added by repositories where information cannot be computed from the name of the license. License_is_FOSS: yes is used for licenses which are known to be FOSS, and License_restricts_use can have values yes or no if the LICENSE file is known to restrict users or usage, or known not to. These are used by, e.g., the available.packages filters.\nThe optional file LICENSE/LICENCE contains a copy of the license of the package. To avoid any confusion only include such a file if it is referred to in the License field of the DESCRIPTION file.\nWhereas you should feel free to include a license file in your source distribution, please do not arrange to install yet another copy of the GNU COPYING or COPYING.LIB files but refer to the copies on https://www.R-project.org/Licenses/ and included in the R distribution (in directory share/licenses). Since files named LICENSE or LICENCE will be installed, do not use these names for standard license files. To include comments about the licensing rather than the body of a license, use a file named something like LICENSE.note.\nA few “standard” licenses are rather license templates which need additional information to be completed via + file LICENSE (with the + surrounded by spaces)\n\n\n1.1.3 Package Dependencies\nThe Depends field gives a comma-separated list of package names which this package depends on. Those packages will be attached before the current package when library or require is called. Each package name may be optionally followed by a comment in parentheses specifying a version requirement. The comment should contain a comparison operator, whitespace and a valid version number, e.g. MASS (>= 3.1-20).\nThe Depends field can also specify a dependence on a certain version of R — e.g., if the package works only with R version 4.0.0 or later, include R (>= 4.0) in the Depends field. (As here, trailing zeroes can be dropped and it is recommended that they are.) You can also require a certain SVN revision for R-devel or R-patched, e.g. R (>= 2.14.0), R (>= r56550) requires a version later than R-devel of late July 2011 (including released versions of 2.14.0).\nIt makes no sense to declare a dependence on R without a version specification, nor on the package base: this is an R package and package base is always available.\nA package or R can appear more than once in the Depends field, for example to give upper and lower bounds on acceptable versions.\nIt is inadvisable to use a dependence on R with patchlevel (the third digit) other than zero. Doing so with packages which others depend on will cause the other packages to become unusable under earlier versions in the series, and e.g. versions 4.x.1 are widely used throughout the Northern Hemisphere academic year.\nBoth library and the R package checking facilities use this field: hence it is an error to use improper syntax or misuse the Depends field for comments on other software that might be needed. The R INSTALL facilities check if the version of R used is recent enough for the package being installed, and the list of packages which is specified will be attached (after checking version requirements) before the current package.\nThe Imports field lists packages whose namespaces are imported from (as specified in the NAMESPACE file) but which do not need to be attached. Namespaces accessed by the :: and ::: operators must be listed here, or in Suggests or Enhances (see below). Ideally this field will include all the standard packages that are used, and it is important to include S4-using packages (as their class definitions can change and the DESCRIPTION file is used to decide which packages to re-install when this happens). Packages declared in the Depends field should not also be in the Imports field. Version requirements can be specified and are checked when the namespace is loaded.\nThe Suggests field uses the same syntax as Depends and lists packages that are not necessarily needed. This includes packages used only in examples, tests or vignettes (see Writing package vignettes), and packages loaded in the body of functions. E.g., suppose an example12 from package foo uses a dataset from package bar. Then it is not necessary to have bar use foo unless one wants to execute all the examples/tests/vignettes: it is useful to have bar, but not necessary. Version requirements can be specified but should be checked by the code which uses the package.12 even one wrapped in \\donttest.\nFinally, the Enhances field lists packages “enhanced” by the package at hand, e.g., by providing methods for classes from these packages, or ways to handle objects from these packages (so several packages have Enhances: chron because they can handle datetime objects from chron even though they prefer R’s native datetime functions). Version requirements can be specified, but are currently not used. Such packages cannot be required to check the package: any tests which use them must be conditional on the presence of the package. (If your tests use e.g. a dataset from another package it should be in Suggests and not Enhances.)\nThe general rules are\n\nA package should be listed in only one of these fields.\nPackages whose namespace only is needed to load the package using library(pkgname) should be listed in the Imports field and not in the Depends field. Packages listed in import or importFrom directives in the NAMESPACE file should almost always be in Imports and not Depends.\nPackages that need to be attached to successfully load the package using library(pkgname) must be listed in the Depends field.\nAll packages that are needed13 to successfully run R CMD check on the package must be listed in one of Depends or Suggests or Imports. Packages used to run examples or tests conditionally (e.g. via if(require(pkgname))) should be listed in Suggests or Enhances. (This allows checkers to ensure that all the packages needed for a complete check are installed.)\nPackages needed to use datasets from the package should be in Imports: this includes those needed to define S4 classes used.\n\n13 This includes all packages directly called by library and require calls, as well as data obtained via data(theirdata, package = \"somepkg\") calls: R CMD check will warn about all of these. But there are subtler uses which it may not detect: e.g. if package A uses package B and makes use of functionality in package B which uses package C which package B suggests or enhances, then package C needs to be in the Suggests list for package A. Nor will undeclared uses in included files be reported, nor unconditional uses of packages listed under Enhances. R CMD check --as-cran will detect more of the subtler uses.In particular, packages providing “only” data for examples or vignettes should be listed in Suggests rather than Depends in order to make lean installations possible.\nVersion dependencies in the Depends and Imports fields are used by library when it loads the package, and install.packages checks versions for the Depends, Imports and (for dependencies = TRUE) Suggests fields.\nIt is important that the information in these fields is complete and accurate: it is for example used to compute which packages depend on an updated package and which packages can safely be installed in parallel.\nThis scheme was developed before all packages had namespaces (R 2.14.0 in October 2011), and good practice changed once that was in place.\nField Depends should nowadays be used rarely, only for packages which are intended to be put on the search path to make their facilities available to the end user (and not to the package itself): for example it makes sense that a user of package latticeExtra would want the functions of package lattice made available.\nAlmost always packages mentioned in Depends should also be imported from in the NAMESPACE file: this ensures that any needed parts of those packages are available when some other package imports the current package.\nThe Imports field should not contain packages which are not imported from (via the NAMESPACE file or :: or ::: operators), as all the packages listed in that field need to be installed for the current package to be installed. (This is checked by R CMD check.)\nR code in the package should call library or require only exceptionally. Such calls are never needed for packages listed in Depends as they will already be on the search path. It used to be common practice to use require calls for packages listed in Suggests in functions which used their functionality, but nowadays it is better to access such functionality via :: calls.\nA package that wishes to make use of header files in other packages to compile its C/C++ code needs to declare them as a comma-separated list in the field LinkingTo in the DESCRIPTION file. For example\nLinkingTo: link1, link2\nThe LinkingTo field can have a version requirement which is checked at installation.\nSpecifying a package in LinkingTo suffices if these are C/C++ headers containing source code or static linking is done at installation: the packages do not need to be (and usually should not be) listed in the Depends or Imports fields. This includes CRAN package BH and almost all users of RcppArmadillo and RcppEigen. Note that LinkingTo applies only to installation: if a packages wishes to use headers to compile code in tests or vignettes the package providing them needs to be listed in Suggests or perhaps Depends.\nFor another use of LinkingTo see Linking to native routines in other packages.\nThe Additional_repositories field is a comma-separated list of repository URLs where the packages named in the other fields may be found. It is currently used by R CMD check to check that the packages can be found, at least as source packages (which can be installed on any platform).\n\n\n1.1.4 Suggested packages\nNote that someone wanting to run the examples/tests/vignettes may not have a suggested package available (and it may not even be possible to install it for that platform). The recommendation used to be to make their use conditional via if(require(\"pkgname\")): this is OK if that conditioning is done in examples/tests/vignettes, although using if(requireNamespace(\"pkgname\")) is preferred, if possible.\nHowever, using require for conditioning in package code is not good practice as it alters the search path for the rest of the session and relies on functions in that package not being masked by other require or library calls. It is better practice to use code like\n if (requireNamespace(\"rgl\", quietly = TRUE)) {\n rgl::plot3d(...)\n } else {\n ## do something else not involving rgl.\n }\nNote the use of rgl:: as that object would not necessarily be visible (and if it is, it need not be the one from that namespace: plot3d occurs in several other packages). If the intention is to give an error if the suggested package is not available, simply use e.g. rgl::plot3d.\nIf the conditional code produces print output, function withAutoprint can be useful.\nNote that the recommendation to use suggested packages conditionally in tests does also apply to packages used to manage test suites: a notorious example was testthat which in version 1.0.0 contained illegal C++ code and hence could not be installed on standards-compliant platforms.\nSome people have assumed that a ‘recommended’ package in Suggests can safely be used unconditionally, but this is not so. (R can be installed without recommended packages, and which packages are ‘recommended’ may change.)\nAs noted above, packages in Enhances must be used conditionally and hence objects within them should always be accessed via ::.\nOn most systems, R CMD check can be run with only those packages declared in Depends and Imports by setting environment variable _R_CHECK_DEPENDS_ONLY_=true, whereas setting _R_CHECK_SUGGESTS_ONLY_=true also allows suggested packages, but not those in Enhances nor those not mentioned in the DESCRIPTION file. It is recommended that a package is checked with each of these set, as well as with neither.\nWARNING: Be extremely careful if you do things which would be run at installation time depending on whether suggested packages are available or not—this includes top-level code in R code files, .onLoad functions and the definitions of S4 classes and methods. The problem is that once a namespace of a suggested package is loaded, references to it may be captured in the installed package (most commonly in S4 methods), but the suggested package may not be available when the installed package is used (which especially for binary packages might be on a different machine). Even worse, the problems might not be confined to your package, for the namespaces of your suggested packages will also be loaded whenever any package which imports yours is installed and so may be captured there.\n\n\n1.1.5 The INDEX file\nThe optional file INDEX contains a line for each sufficiently interesting object in the package, giving its name and a description (functions such as print methods not usually called explicitly might not be included). Normally this file is missing and the corresponding information is automatically generated from the documentation sources (using tools::Rdindex()) when installing from source.\nThe file is part of the information given by library(help = pkgname).\nRather than editing this file, it is preferable to put customized information about the package into an overview help page (see Documenting packages) and/or a vignette (see Writing package vignettes).\n\n\n1.1.6 Package subdirectories\nThe R subdirectory contains R code files, only. The code files to be installed must start with an ASCII (lower or upper case) letter or digit and have one of the extensions14 .R, .S, .q, .r, or .s. We recommend using .R, as this extension seems to be not used by any other software. It should be possible to read in the files using source(), so R objects must be created by assignments. Note that there need be no connection between the name of the file and the R objects created by it. Ideally, the R code files should only directly assign R objects and definitely should not call functions with side effects such as require and options. If computations are required to create objects these can use code ‘earlier’ in the package (see the Collate field) plus functions in the Depends packages provided that the objects created do not depend on those packages except via namespace imports.14 Extensions .S and .s arise from code originally written for S(-PLUS), but are commonly used for assembler code. Extension .q was used for S, which at one time was tentatively called QPE.\nExtreme care is needed if top-level computations are made to depend on availability or not of other packages. In particular this applies to setMethods and setClass calls. Nor should they depend on the availability of external resources such as downloads.\nTwo exceptions are allowed: if the R subdirectory contains a file sysdata.rda (a saved image of one or more R objects: please use suitable compression as suggested by tools::resaveRdaFiles, and see also the SysDataCompression DESCRIPTION field.) this will be lazy-loaded into the namespace environment – this is intended for system datasets that are not intended to be user-accessible via data. Also, files ending in .in will be allowed in the R directory to allow a configure script to generate suitable files.\nOnly ASCII characters (and the control characters tab, formfeed, LF and CR) should be used in code files. Other characters are accepted in comments15, but then the comments may not be readable in e.g. a UTF-8 locale. Non-ASCII characters in object names will normally16 fail when the package is installed. Any byte will be allowed in a quoted character string but \\uxxxx escapes should be used for non-ASCII characters. However, non-ASCII character strings may not be usable in some locales and may display incorrectly in others.15 but they should be in the encoding declared in the DESCRIPTION file.16 This is true for OSes which implement the C locale: Windows’ idea of the C locale uses the WinAnsi charset.\nVarious R functions in a package can be used to initialize and clean up. See Load hooks.\nThe man subdirectory should contain (only) documentation files for the objects in the package in R documentation (Rd) format. The documentation filenames must start with an ASCII (lower or upper case) letter or digit and have the extension .Rd (the default) or .rd. Further, the names must be valid in file:// URLs, which means17 they must be entirely ASCII and not contain %. See Writing R documentation files, for more information. Note that all user-level objects in a package should be documented; if a package pkg contains user-level objects which are for “internal” use only, it should provide a file pkg-internal.Rd which documents all such objects, and clearly states that these are not meant to be called by the user. See e.g. the sources for package grid in the R distribution. Note that packages which use internal objects extensively should not export those objects from their namespace, when they do not need to be documented (see Package namespaces).17 More precisely, they can contain the English alphanumeric characters and the symbols $ - _ . + ! ' ( ) , ;  = &.\nHaving a man directory containing no documentation files may give an installation error.\nThe man subdirectory may contain a subdirectory named macros; this will contain source for user-defined Rd macros. (See User-defined macros.) These use the Rd format, but may not contain anything but macro definitions, comments and whitespace.\nThe R and man subdirectories may contain OS-specific subdirectories named unix or windows.\nThe sources and headers for the compiled code are in src, plus optionally a file Makevars or Makefile (or for use on Windows, with extension .win or .ucrt). When a package is installed using R CMD INSTALL, make is used to control compilation and linking into a shared object for loading into R. There are default make variables and rules for this (determined when R is configured and recorded in R_HOME/etcR_ARCH/Makeconf), providing support for C, C++, fixed- or free-form Fortran, Objective C and Objective C++18 with associated extensions .c, .cc or .cpp, .f, .f90 or .f95,19 .m, and .mm, respectively. We recommend using .h for headers, also for C++20 or Fortran 9x include files. (Use of extension .C for C++ is no longer supported.) Files in the src directory should not be hidden (start with a dot), and hidden files will under some versions of R be ignored.18 either or both of which may not be supported on particular platforms. Their main use is on macOS, but unfortunately recent versions of the macOS SDK have removed much of the support for Objective C v1.0 and Objective C++.19 This is not accepted by the Intel Fortran compiler.20 Using .hpp is not guaranteed to be portable.\nIt is not portable (and may not be possible at all) to mix all these languages in a single package. Because R itself uses it, we know that C and fixed-form Fortran can be used together, and mixing C, C++ and Fortran usually work for the platform’s native compilers.\nIf your code needs to depend on the platform there are certain defines which can used in C or C++. On all Windows builds (even 64-bit ones) _WIN32 will be defined: on 64-bit Windows builds also _WIN64. On macOS __APPLE__ is defined21; for an ‘Apple Silicon’ platform, test for both __APPLE__ and __arm64__.21 There is also __APPLE_CC__, but that indicates a compiler with Apple-specific features not the OS, although for historical reasons is is defined by LLVM clang. It is used in Rinlinedfuns.h.\nThe default rules can be tweaked by setting macros22 in a file src/Makevars (see Using Makevars). Note that this mechanism should be general enough to eliminate the need for a package-specific src/Makefile. If such a file is to be distributed, considerable care is needed to make it general enough to work on all R platforms. If it has any targets at all, it should have an appropriate first target named all and a (possibly empty) target clean which removes all files generated by running make (to be used by R CMD INSTALL --clean and R CMD INSTALL --preclean). There are platform-specific file names on Windows: src/Makevars.win takes precedence over src/Makevars and src/Makefile.win must be used. Since R 4.2.0, src/Makevars.ucrt takes precedence over src/Makevars.win and src/Makefile.ucrt takes precedence over src/Makefile.win. src/Makevars.ucrt and src/Makefile.ucrt will be ignored by earlier versions of R, and hence can be used to provide content specific to UCRT or Rtools42 and newer, but the support for .ucrt files may be removed in the future when building packages from source on the older versions of R will no longer be needed, and hence the files may be renamed back to .win. Some make programs require makefiles to have a complete final line, including a newline.22 the POSIX terminology, called ‘make variables’ by GNU make.\nA few packages use the src directory for purposes other than making a shared object (e.g. to create executables). Such packages should have files src/Makefile and src/Makefile.win or src/Makefile.ucrt (unless intended for only Unix-alikes or only Windows). Note that on Unix such makefiles are included after R_HOME/etc/R_ARCH/Makeconf so all the usual R macros and make rules are available – for example C compilation will by default use the C compiler and flags with which R was configured. This also applies on Windows as from R 4.3.0: packages intended to be used with earlier versions should include that file themselves.\nThe order of inclusion of makefiles for a package which does not have a src/Makefile file is\n\n\n\nUnix-alike\nWindows\n\n\n\n\nsrc/Makevars `src/Make\nvars.ucrt,src/Makevars.win`\n\n\nR_HOME/etc/R_ARCH/Makeconf R_HOME/etc/R_ARCH/Makeconf\n\n\n\nR_MAKEVARS_SITE, R_HOME/etc/R_ARCH/Makevars.site R_MAKEVARS_SITE, `R_HOME/etc/R_ARCH/Makevars\n.site`\n\n\nR_HOME/share/make/shlib.mk `R_HOME/share/make/win\nshlib.mk`\n\n\nR_MAKEVARS_USER, ~/.R/Makevars-platform, ~/.R/Makevars R_MAKEVARS_USER, ` ~/.R/Makev\nars.ucrt, ~/.R/Makevars.win64, ~/.R/Makevars.win`\n\n\n\nFor those which do, it is\n\n\n\nR_HOME/etc/R_ARCH/Makeconf R_HOME/etc/R_ARCH/Makeconf\n\n\n\nR_MAKEVARS_SITE, R_HOME/etc/R_ARCH/Makevars.site R_MAKEVARS_SITE, `R_HOME/etc/R_ARCH/Makevars\n.site`\n\n\nsrc/Makefile `src/Make\nfile.ucrt,src/Makefile.win`\n\n\nR_MAKEVARS_USER, ~/.R/Makevars-platform, ~/.R/Makevars R_MAKEVARS_USER, ` ~/.R/Makev\nars.ucrt, ~/.R/Makevars.win64, ~/.R/Makevars.win`\n\n\n\nItems in capitals are environment variables: those separated by commas are alternatives looked for in the order shown.\nIn very special cases packages may create binary files other than the shared objects/DLLs in the src directory. Such files will not be installed in a multi-architecture setting since R CMD INSTALL --libs-only is used to merge multiple sub-architectures and it only copies shared objects/DLLs. If a package wants to install other binaries (for example executable programs), it should provide an R script src/install.libs.R which will be run as part of the installation in the src build directory instead of copying the shared objects/DLLs. The script is run in a separate R environment containing the following variables: R_PACKAGE_NAME (the name of the package), R_PACKAGE_SOURCE (the path to the source directory of the package), R_PACKAGE_DIR (the path of the target installation directory of the package), R_ARCH (the arch-dependent part of the path, often empty), SHLIB_EXT (the extension of shared objects) and WINDOWS (TRUE on Windows, FALSE elsewhere). Something close to the default behavior could be replicated with the following src/install.libs.R file:\nfiles <- Sys.glob(paste0(\"*\", SHLIB_EXT))\ndest <- file.path(R_PACKAGE_DIR, paste0('libs', R_ARCH))\ndir.create(dest, recursive = TRUE, showWarnings = FALSE)\nfile.copy(files, dest, overwrite = TRUE)\nif(file.exists(\"symbols.rds\"))\n file.copy(\"symbols.rds\", dest, overwrite = TRUE)\nOn the other hand, executable programs could be installed along the lines of\nexecs <- c(\"one\", \"two\", \"three\")\nif(WINDOWS) execs <- paste0(execs, \".exe\")\nif ( any(file.exists(execs)) ) {\n dest <- file.path(R_PACKAGE_DIR, paste0('bin', R_ARCH))\n dir.create(dest, recursive = TRUE, showWarnings = FALSE)\n file.copy(execs, dest, overwrite = TRUE)\n}\nNote the use of architecture-specific subdirectories of bin where needed. (Executables should installed under a bin directory and not under libs. It is good practice to check that they can be executed as part of the installation script, so a broken package is not installed.)\nThe data subdirectory is for data files: See Data in packages.\nThe demo subdirectory is for R scripts (for running via demo()) that demonstrate some of the functionality of the package. Demos may be interactive and are not checked automatically, so if testing is desired use code in the tests directory to achieve this. The script files must start with a (lower or upper case) letter and have one of the extensions .R or .r. If present, the demo subdirectory should also have a 00Index file with one line for each demo, giving its name and a description separated by a tab or at least three spaces. (This index file is not generated automatically.) Note that a demo does not have a specified encoding and so should be an ASCII file (see Encoding issues). Function demo() will use the package encoding if there is one, but this is mainly useful for non-ASCII comments.\nThe contents of the inst subdirectory will be copied recursively to the installation directory. Subdirectories of inst should not interfere with those used by R (currently, R, data, demo, exec, libs, man, help, html and Meta, and earlier versions used latex, R-ex). The copying of the inst happens after src is built so its Makefile can create files to be installed. To exclude files from being installed, one can specify a list of exclude patterns in file .Rinstignore in the top-level source directory. These patterns should be Perl-like regular expressions (see the help for regexp in R for the precise details), one per line, to be matched case-insensitively against the file and directory paths, e.g. doc/.*[.]png$ will exclude all PNG files in inst/doc based on the extension.\nNote that with the exceptions of INDEX, LICENSE/LICENCE and NEWS, information files at the top level of the package will not be installed and so not be known to users of Windows and macOS compiled packages (and not seen by those who use R CMD INSTALL or install.packages() on the tarball). So any information files you wish an end user to see should be included in inst. Note that if the named exceptions also occur in inst, the version in inst will be that seen in the installed package.\nThings you might like to add to inst are a CITATION file for use by the citation function, and a NEWS.Rd file for use by the news function. See its help page for the specific format restrictions of the NEWS.Rd file.\nAnother file sometimes needed in inst is AUTHORS or COPYRIGHTS to specify the authors or copyright holders when this is too complex to put in the DESCRIPTION file.\nSubdirectory tests is for additional package-specific test code, similar to the specific tests that come with the R distribution. Test code can either be provided directly in a .R (or .r as from R 3.4.0) file, or via a .Rin file containing code which in turn creates the corresponding .R file (e.g., by collecting all function objects in the package and then calling them with the strangest arguments). The results of running a .R file are written to a .Rout file. If there is a corresponding23 .Rout.save file, these two are compared, with differences being reported but not causing an error. The directory tests is copied to the check area, and the tests are run with the copy as the working directory and with R_LIBS set to ensure that the copy of the package installed during testing will be found by library(pkg_name). Note that the package-specific tests are run in a vanilla R session without setting the random-number seed, so tests which use random numbers will need to set the seed to obtain reproducible results (and it can be helpful to do so in all cases, to avoid occasional failures when tests are run).23 The best way to generate such a file is to copy the .Rout from a successful run of R CMD check. If you want to generate it separately, do run R with options --vanilla --no-echo and with environment variable LANGUAGE=en set to get messages in English. Be careful not to use output with the option --timings (and note that --as-cran sets it).\nIf directory tests has a subdirectory Examples containing a file pkg-Ex.Rout.save, this is compared to the output file for running the examples when the latter are checked. Reference output should be produced without having the --timings option set (and note that --as-cran sets it).\nIf reference output is included for examples, tests or vignettes do make sure that it is fully reproducible, as it will be compared verbatim to that produced in a check run, unless the IGNORE_RDIFF markup is used. Things which trip up maintainers include displayed version numbers from loading other packages, printing numerical results to an unreproducibly high precision and printing timings. Another trap is small values which are in fact rounding error from zero: consider using zapsmall.\nSubdirectory exec could contain additional executable scripts the package needs, typically scripts for interpreters such as the shell, Perl, or Tcl. NB: only files (and not directories) under exec are installed (and those with names starting with a dot are ignored), and they are all marked as executable (mode 755, moderated by umask) on POSIX platforms. Note too that this is not suitable for executable programs since some platforms (including Windows) support multiple architectures using the same installed package directory.\nSubdirectory po is used for files related to localization: see Internationalization.\nSubdirectory tools is the preferred place for auxiliary files needed during configuration, and also for sources need to re-create scripts (e.g. M4 files for autoconf: some prefer to put those in a subdirectory m4 of tools).\n\n\n1.1.7 Data in packages\nThe data subdirectory is for data files, either to be made available via lazy-loading or for loading using data(). (The choice is made by the LazyData field in the DESCRIPTION file: the default is not to do so.) It should not be used for other data files needed by the package, and the convention has grown up to use directory inst/extdata for such files.\nData files can have one of three types as indicated by their extension: plain R code (.R or .r), tables (.tab, .txt, or .csv, see ?data for the file formats, and note that .csv is not the standard24 CSV format), or save() images (.RData or .rda). The files should not be hidden (have names starting with a dot). Note that R code should be if possible “self-sufficient” and not make use of extra functionality provided by the package, so that the data file can also be used without having to load the package or its namespace: it should run as silently as possible and not change the search() path by attaching packages or other environments.24 e.g. https://www.rfc-editor.org/rfc/rfc4180.\nImages (extensions .RData25 or .rda) can contain references to the namespaces of packages that were used to create them. Preferably there should be no such references in data files, and in any case they should only be to packages listed in the Depends and Imports fields, as otherwise it may be impossible to install the package. To check for such references, load all the images into a vanilla R session, run str() on all the datasets, and look at the output of loadedNamespaces().25 People who have trouble with case are advised to use .rda as a common error is to refer to abc.RData as abc.Rdata!\nParticular care is needed where a dataset or one of its components is of an S4 class, especially if the class is defined in a different package. First, the package containing the class definition has to be available to do useful things with the dataset, so that package must be listed in Imports or Depends (even if this gives a check warning about unused imports). Second, the definition of an S4 class can change, and often is unnoticed when in a package with a different author. So it may be wiser to use the .R form and use that to create the dataset object when needed (loading package namespaces but not attaching them by using requireNamespace(pkg, quietly = TRUE) and using pkg:: to refer to objects in the namespace).\nIf you are not using LazyData and either your data files are large or e.g., you use data/foo.R scripts to produce your data, loading your namespace, you can speed up installation by providing a file datalist in the data subdirectory. This should have one line per topic that data() will find, in the format foo if data(foo) provides foo, or foo: bar bah if data(foo) provides bar and bah. R CMD build will automatically add a datalist file to data directories of over 1Mb, using the function tools::add_datalist.\nTables (.tab, .txt, or .csv files) can be compressed by gzip, bzip2 or xz, optionally with additional extension .gz, .bz2 or .xz.\nIf your package is to be distributed, do consider the resource implications of large datasets for your users: they can make packages very slow to download and use up unwelcome amounts of storage space, as well as taking many seconds to load. It is normally best to distribute large datasets as .rda images prepared by save(, compress = TRUE) (the default). Using bzip2 or xz compression will usually reduce the size of both the package tarball and the installed package, in some cases by a factor of two or more.\nPackage tools has a couple of functions to help with data images: checkRdaFiles reports on the way the image was saved, and resaveRdaFiles will re-save with a different type of compression, including choosing the best type for that particular image.\nMany packages using LazyData will benefit from using a form of compression other than gzip in the installed lazy-loading database. This can be selected by the --data-compress option to R CMD INSTALL or by using the LazyDataCompression field in the DESCRIPTION file. Useful values are bzip2, xz and the default, gzip: value none is also accepted. The only way to discover which is best is to try them all and look at the size of the pkgname/data/Rdata.rdb file. A function to do that (quoting sizes in KB) is\nCheckLazyDataCompression <- function(pkg)\n{\n pkg_name <- sub(\"_.*\", \"\", pkg)\n lib <- tempfile(); dir.create(lib)\n zs <- c(\"gzip\", \"bzip2\", \"xz\")\n res <- integer(3); names(res) <- zs\n for (z in zs) {\n opts <- c(paste0(\"--data-compress=\", z),\n \"--no-libs\", \"--no-help\", \"--no-demo\", \"--no-exec\", \"--no-test-load\")\n install.packages(pkg, lib, INSTALL_opts = opts, repos = NULL, quiet = TRUE)\n res[z] <- file.size(file.path(lib, pkg_name, \"data\", \"Rdata.rdb\"))\n }\n ceiling(res/1024)\n}\n(applied to a source package without any LazyDataCompression field). R CMD check will warn if it finds a pkgname/data/Rdata.rdb file of more than 5MB without LazyDataCompression being set. If you see that, run CheckLazyDataCompression() and set the field – to gzip in the unlikely event26 that is the best choice.26 For all the CRAN packages tested, either gz or bzip2 provided a very substantial reduction in installed size.\nThe analogue for sysdata.rda is field SysDataCompression: the default is xz for files bigger than 1MB otherwise gzip.\nLazy-loading is not supported for very large datasets (those which when serialized exceed 2GB, the limit for the format on 32-bit platforms).\n\n\n1.1.8 Non-R scripts in packages\nCode which needs to be compiled (C, C++, Fortran …) is included in the src subdirectory and discussed elsewhere in this document.\nSubdirectory exec could be used for scripts for interpreters such as the shell, BUGS, JavaScript, Matlab, Perl, php (amap), Python or Tcl (Simile), or even R. However, it seems more common to use the inst directory, for example WriteXLS/inst/Perl, NMF/inst/m-files, RnavGraph/inst/tcl, RProtoBuf/inst/python and emdbook/inst/BUGS and gridSVG/inst/js.\nJava code is a special case: except for very small programs, .java files should be byte-compiled (to a .class file) and distributed as part of a .jar file: the conventional location for the .jar file(s) is inst/java. It is desirable (and required under an Open Source license) to make the Java source files available: this is best done in a top-level java directory in the package—the source files should not be installed.\nIf your package requires one of these interpreters or an extension then this should be declared in the SystemRequirements field of its DESCRIPTION file. (Users of Java most often do so via rJava, when depending on/importing that suffices unless there is a version requirement on Java code in the package.)\nWindows and Mac users should be aware that the Tcl extensions BWidget and Tktable (which have sometimes been included in the Windows27 and macOS R installers) are extensions and do need to be declared (and that Tktable is less widely available than it used to be, including not in the main repositories for major Linux distributions). BWidget needs to be installed by the user on other OSes. This is fairly easy to do: first find the Tcl search path:27 BWidget still is on Windows but Tktable was not in R 4.0.0.\nlibrary(tcltk)\nstrsplit(tclvalue('auto_path'), \" \")[[1]]\nthen download the sources from https://sourceforge.net/projects/tcllib/files/BWidget/ and in a terminal run something like\ntar xf bwidget-1.9.14.tar.gz\nsudo mv bwidget-1.9.14 /usr/local/lib\nsubstituting a location on the Tcl search path for /usr/local/lib if needed. (If no location on that search path is writeable, you will need to add one each time BWidget is to be used with tcltk::addTclPath().)\nTo (silently) test for the presence of Tktable one can use\nlibrary(tcltk)\nhave_tktable <- !isFALSE(suppressWarnings(tclRequire('Tktable')))\nInstalling Tktable needs a C compiler and the Tk headers (not necessarily installed with Tcl/Tk). At the time of writing the latest sources (from 2008) were available from https://sourceforge.net/projects/tktable/files/tktable/2.10/Tktable2.10.tar.gz/download, but needed patching for current Tk (8.6.11, but not 8.6.10) – a patch can be found at https://www.stats.ox.ac.uk/pub/bdr/Tktable/. For a system installation of Tk you may need to install Tktable as root as on e.g. Fedora all the locations on auto_path are owned by root.\n\n\n1.1.9 Specifying URLs\nURLs in many places in the package documentation will be converted to clickable hyperlinks in at least some of their renderings. So care is needed that their forms are correct and portable.\nThe full URL should be given, including the scheme (often http:// or https://) and a final / for references to directories.\nSpaces in URLs are not portable and how they are handled does vary by HTTP server and by client. There should be no space in the host part of an http:// URL, and spaces in the remainder should be encoded, with each space replaced by %20.\nOther characters may benefit from being encoded: see the help on URLencode().\nThe canonical URL for a CRAN package is\nhttps://cran.r-project.org/package=pkgname\nand not a version starting https://cran.r-project.org/web/packages/pkgname." }, { "objectID": "Creating-R-packages.html#configure-and-cleanup", @@ -109,7 +109,7 @@ "href": "Writing-R-documentation-files.html#marking-text", "title": "2  Writing R documentation files", "section": "2.3 Marking text", - "text": "2.3 Marking text\nThe following logical markup commands are available for emphasizing or quoting text.\n\n\\emph{text} ¶\n\n\n\n\\strong{text}\n\nEmphasize text using italic and bold font if possible; \\strong is regarded as stronger (more emphatic).\n\n\\bold{text} ¶\n\nSet text in bold font where possible.\n\n\\sQuote{text} ¶\n\n\n\n\\dQuote{text}\n\nPortably single or double quote text (without hard-wiring the characters used for quotation marks).\n\n\nEach of the above commands takes LaTeX-like input, so other macros may be used within text.\nThe following logical markup commands are available for indicating specific kinds of text. Except as noted, these take ‘verbatim’ text input, and so other macros may not be used within them. Some characters will need to be escaped (see Insertions).\n\n\\code{text} ¶\n\nIndicate text that is a literal example of a piece of an R program, e.g., a fragment of R code or the name of an R object. Text is entered in R-like syntax, and displayed using typewriter font where possible. Macros \\var and \\link are interpreted within text.\n\n\\preformatted{text} ¶\n\nIndicate text that is a literal example of a piece of a program. Text is displayed using typewriter font where possible. Formatting, e.g. line breaks, is preserved. (Note that this includes a line break after the initial {, so typically text should start on the same line as the command.)\nDue to limitations in LaTeX as of this writing, this macro may not be nested within other markup macros other than \\dQuote and \\sQuote, as errors or bad formatting may result.\n\n\\kbd{keyboard-characters} ¶\n\nIndicate keyboard input, using slanted typewriter font if possible, so users can distinguish the characters they are supposed to type from computer output. Text is entered ‘verbatim’.\n\n\\samp{text} ¶\n\nIndicate text that is a literal example of a sequence of characters, entered ‘verbatim’, to be included within word-wrapped text. Displayed within single quotation marks and using typewriter font where possible.\n\n\\verb{text} ¶\n\nIndicate text that is a literal example of a sequence of characters, entered ‘verbatim’. No wrapping or reformatting will occur. Displayed using typewriter font where possible.\n\n\\pkg{package_name} ¶\n\nIndicate the name of an R package. LaTeX-like.\n\n\\file{file_name} ¶\n\nIndicate the name of a file. Text is LaTeX-like, so backslash needs to be escaped. Displayed using a distinct font where possible.\n\n\\email{email_address} ¶\n\nIndicate an electronic mail address. LaTeX-like, will be rendered as a hyperlink in HTML and PDF conversion. Displayed using typewriter font where possible.\n\n\\url{uniform_resource_locator} ¶\n\nIndicate a uniform resource locator (URL) for the World Wide Web. The argument is handled as ‘verbatim’ text (with percent and braces escaped by backslash), and rendered as a hyperlink in HTML and PDF conversion. Linefeeds are removed, and leading and trailing whitespace5 is removed. See Specifying URLs.5 as defined by the R function trimws.\nDisplayed using typewriter font where possible.\n\n\\href{uniform_resource_locator}{text} ¶\n\nIndicate a hyperlink to the World Wide Web. The first argument is handled as ‘verbatim’ text (with percent and braces escaped by backslash) and is used as the URL in the hyperlink, with the second argument of LaTeX-like text displayed to the user. Linefeeds are removed from the first argument, and leading and trailing whitespace is removed.\nNote that RFC3986-encoded URLs (e.g. using %28VS.85%29 in place of (VS.85)) may not work correctly in versions of R before 3.1.3 and are best avoided—use URLdecode() to decode them.\n\n\\var{metasyntactic_variable} ¶\n\nIndicate a metasyntactic variable. In most cases this will be rendered distinctly, e.g. in italic (PDF/HTML) or wrapped in <...> (text), but not in all6. LaTeX-like.6 Currently it is rendered differently in HTML conversions, and in LaTeX and text conversion outside \\usage and \\examples environments.\n\n\\env{environment_variable} ¶\n\nIndicate an environment variable. ‘Verbatim’. Displayed using typewriter font where possible\n\n\\option{option} ¶\n\nIndicate a command-line option. ‘Verbatim’. Displayed using typewriter font where possible.\n\n\\command{command_name} ¶\n\nIndicate the name of a command. LaTeX-like, so \\var is interpreted. Displayed using typewriter font where possible.\n\n\\dfn{term} ¶\n\nIndicate the introductory or defining use of a term. LaTeX-like.\n\n\\cite{reference} ¶\n\nIndicate a reference without a direct cross-reference via \\link (see Cross-references), such as the name of a book. LaTeX-like.\n\n\\acronym{acronym} ¶\n\nIndicate an acronym (an abbreviation written in all capital letters), such as GNU. LaTeX-like." + "text": "2.3 Marking text\nThe following logical markup commands are available for emphasizing or quoting text.\n\n\\emph{text} ¶\n\n\n\n\\strong{text}\n\nEmphasize text using italic and bold font if possible; \\strong is regarded as stronger (more emphatic).\n\n\\bold{text} ¶\n\nSet text in bold font where possible.\n\n\\sQuote{text} ¶\n\n\n\n\\dQuote{text}\n\nPortably single or double quote text (without hard-wiring the characters used for quotation marks).\n\n\nEach of the above commands takes LaTeX-like input, so other macros may be used within text.\nThe following logical markup commands are available for indicating specific kinds of text. Except as noted, these take ‘verbatim’ text input, and so other macros may not be used within them. Some characters will need to be escaped (see Insertions).\n\n\\code{text} ¶\n\nIndicate text that is a literal example of a piece of an R program, e.g., a fragment of R code or the name of an R object. Text is entered in R-like syntax, and displayed using typewriter font where possible. Macros \\var and \\link are interpreted within text.\n\n\\preformatted{text} ¶\n\nIndicate text that is a literal example of a piece of a program. Text is displayed using typewriter font where possible. Formatting, e.g. line breaks, is preserved. (Note that this includes a line break after the initial {, so typically text should start on the same line as the command.)\nDue to limitations in LaTeX as of this writing, this macro may not be nested within other markup macros other than \\dQuote and \\sQuote, as errors or bad formatting may result.\n\n\\kbd{keyboard-characters} ¶\n\nIndicate keyboard input, using slanted typewriter font if possible, so users can distinguish the characters they are supposed to type from computer output. Text is entered ‘verbatim’.\n\n\\samp{text} ¶\n\nIndicate text that is a literal example of a sequence of characters, entered ‘verbatim’, to be included within word-wrapped text. Displayed within single quotation marks and using typewriter font where possible.\n\n\\verb{text} ¶\n\nIndicate text that is a literal example of a sequence of characters, entered ‘verbatim’. No wrapping or reformatting will occur. Displayed using typewriter font where possible.\n\n\\pkg{package_name} ¶\n\nIndicate the name of an R package. LaTeX-like.\n\n\\file{file_name} ¶\n\nIndicate the name of a file. Text is LaTeX-like, so backslash needs to be escaped. Displayed using a distinct font where possible.\n\n\\email{email_address} ¶\n\nIndicate an electronic mail address. LaTeX-like, will be rendered as a hyperlink in HTML and PDF conversion. Displayed using typewriter font where possible.\n\n\\url{uniform_resource_locator} ¶\n\nIndicate a uniform resource locator (URL) for the World Wide Web. The argument is handled as ‘verbatim’ text (with percent and braces escaped by backslash), and rendered as a hyperlink in HTML and PDF conversion. Linefeeds are removed, and leading and trailing whitespace5 is removed. See Specifying URLs.5 as defined by the R function trimws.\nDisplayed using typewriter font where possible.\n\n\\href{uniform_resource_locator}{text} ¶\n\nIndicate a hyperlink to the World Wide Web. The first argument is handled as ‘verbatim’ text (with percent and braces escaped by backslash) and is used as the URL in the hyperlink, with the second argument of LaTeX-like text displayed to the user. Linefeeds are removed from the first argument, and leading and trailing whitespace is removed.\nNote that RFC3986-encoded URLs (e.g. using %28VS.85%29 in place of (VS.85)) may not work correctly in versions of R before 3.1.3 and are best avoided—use URLdecode() to decode them.\n\n\\var{metasyntactic_variable} ¶\n\nIndicate a metasyntactic variable. In most cases this will be rendered distinctly, e.g. in italic (PDF/HTML) or wrapped in <...> (text), but not in all6. LaTeX-like.6 Currently it is rendered differently in HTML conversions, and in LaTeX and text conversion outside \\usage and \\examples environments.\n\n\\env{environment_variable} ¶\n\nIndicate an environment variable. ‘Verbatim’. Displayed using typewriter font where possible\n\n\\option{option} ¶\n\nIndicate a command-line option. ‘Verbatim’. Displayed using typewriter font where possible.\n\n\\command{command_name} ¶\n\nIndicate the name of a command. LaTeX-like, so \\var is interpreted. Displayed using typewriter font where possible.\n\n\\dfn{term} ¶\n\nIndicate the introductory or defining use of a term. LaTeX-like.\n\n\\cite{reference} ¶\n\nIndicate a reference without a direct cross-reference via \\link (see Cross-references), such as the name of a book. LaTeX-like.\n\n\\acronym{acronym} ¶\n\nIndicate an acronym (an abbreviation written in all capital letters), such as GNU. LaTeX-like.\n\n\\abbr{abbr} ¶\n\nIndicates an abbreviation. LaTeX-like." }, { "objectID": "Writing-R-documentation-files.html#lists-and-tables", @@ -522,7 +522,7 @@ "href": "Function-and-variable-index.html", "title": "Function and variable index", "section": "", - "text": "Jump to:  \n.   \\  \nA   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   V   W  \n\n\n\n\n\n\n\nIndex Entry\n \nSection\n\n\n.\n\n\n\n\n\n\n.C:\n \nInterface functions .C and .Fortran\n\n\n\n.Call:\n \nHandling R objects in C\n\n\n\n.Call:\n \nCalling .Call\n\n\n\n.External:\n \nHandling R objects in C\n\n\n\n.External:\n \nCalling .External\n\n\n\n.Fortran:\n \nInterface functions .C and .Fortran\n\n\n\n.Last.lib:\n \nLoad hooks\n\n\n\n.onAttach:\n \nLoad hooks\n\n\n\n.onDetach:\n \nLoad hooks\n\n\n\n.onLoad:\n \nLoad hooks\n\n\n\n.onUnload:\n \nLoad hooks\n\n\n\n.Random.seed:\n \nRandom numbers\n\n\n\\\n\n\n\n\n\n\n\\acronym:\n \nMarking text\n\n\n\n\\alias:\n \nDocumenting functions\n\n\n\n\\arguments:\n \nDocumenting functions\n\n\n\n\\author:\n \nDocumenting functions\n\n\n\n\\bold:\n \nMarking text\n\n\n\n\\cite:\n \nMarking text\n\n\n\n\\code:\n \nMarking text\n\n\n\n\\command:\n \nMarking text\n\n\n\n\\concept:\n \nIndices\n\n\n\n\\cr:\n \nSectioning\n\n\n\n\\CRANpkg{pkg}:  \n[User-defined m\nacros](Writing-R-documentation-files.html#user-defined-macros)\n\n\n\n\\deqn:\n \nMathematics\n\n\n\n\\describe:\n \nLists and tables\n\n\n\n\\description:\n \nDocumenting functions\n\n\n\n\\details:\n \nDocumenting functions\n\n\n\n\\dfn:\n \nMarking text\n\n\n\n\\doi{numbers}:  \n[User-defined m\nacros](Writing-R-documentation-files.html#user-defined-macros)\n\n\n\n\\dontrun:\n \nDocumenting functions\n\n\n\n\\dontshow:\n \nDocumenting functions\n\n\n\n\\dots:\n \nInsertions\n\n\n\n\\dQuote:\n \nMarking text\n\n\n\n\\email:\n \nMarking text\n\n\n\n\\emph:\n \nMarking text\n\n\n\n\\enc:\n \nInsertions\n\n\n\n\\enumerate:\n \nLists and tables\n\n\n\n\\env:\n \nMarking text\n\n\n\n\\eqn:\n \nMathematics\n\n\n\n\\examples:\n \nDocumenting functions\n\n\n\n\\figure:\n \nFigures\n\n\n\n\\file:\n \nMarking text\n\n\n\n\\format:\n \nDocumenting data sets\n\n\n\n\\href:\n \nMarking text\n\n\n\n\\if:\n \nConditional text\n\n\n\n\\ifelse:\n \nConditional text\n\n\n\n\\itemize:\n \nLists and tables\n\n\n\n\\kbd:\n \nMarking text\n\n\n\n\\keyword:\n \nDocumenting functions\n\n\n\n\\ldots:\n \nInsertions\n\n\n\n\\link:\n \nCross-references\n\n\n\n\\method:\n \nDocumenting functions\n\n\n\n\\name:\n \nDocumenting functions\n\n\n\n\\newcommand:\n \nUser-defined macros\n\n\n\n\\note:\n \nDocumenting functions\n\n\n\n\\option:\n \nMarking text\n\n\n\n\\out:\n \nConditional text\n\n\n\n\\packageAuthor:\n \nUser-defined macros\n\n\n\n\\packageDescription:\n \nUser-defined macros\n\n\n\n\\packageDESCRIPTION:\n \nUser-defined macros\n\n\n\n\\packageIndices:\n \nUser-defined macros\n\n\n\n\\packageMaintainer:\n \nUser-defined macros\n\n\n\n\\packageTitle:\n \nUser-defined macros\n\n\n\n\\pkg:\n \nMarking text\n\n\n\n\\preformatted:\n \nMarking text\n\n\n\n\\R:\n \nInsertions\n\n\n\n\\RdOpts:\n \nDynamic pages\n\n\n\n\\references:\n \nDocumenting functions\n\n\n\n\\renewcommand:\n \nUser-defined macros\n\n\n\n\\S3method:\n \nDocumenting functions\n\n\n\n\\samp:\n \nMarking text\n\n\n\n\\section:\n \nSectioning\n\n\n\n\\seealso:\n \nDocumenting functions\n\n\n\n\\Sexpr:\n \nDynamic pages\n\n\n\n\\source:\n \nDocumenting data sets\n\n\n\n\\sQuote:\n \nMarking text\n\n\n\n\\sspace:\n \nUser-defined macros\n\n\n\n\\strong:\n \nMarking text\n\n\n\n\\tabular:\n \nLists and tables\n\n\n\n\\title:\n \nDocumenting functions\n\n\n\n\\url:\n \nMarking text\n\n\n\n\\usage:\n \nDocumenting functions\n\n\n\n\\value:\n \nDocumenting functions\n\n\n\n\\var:\n \nMarking text\n\n\n\n\\verb:\n \nMarking text\n\n\nA\n\n\n\n\n\n\nallocList:\n \nEvaluating R expressions from C\n\n\n\nallocMatrix:\n \nCalculating numerical derivatives\n\n\n\nallocVector:\n \nAllocating storage\n\n\n\nany_duplicated:\n \nSemi-internal convenience functions\n\n\n\nany_duplicated3:\n \nSemi-internal convenience functions\n\n\n\nasChar:\n \nSome convenience functions\n\n\n\nasComplex:\n \nSome convenience functions\n\n\n\nasInteger:\n \nSome convenience functions\n\n\n\nasLogical:\n \nSome convenience functions\n\n\n\nasReal:\n \nSome convenience functions\n\n\n\nAUTHORS:\n \nPackage subdirectories\n\n\nB\n\n\n\n\n\n\nbessel_i:\n \nMathematical functions\n\n\n\nbessel_j:\n \nMathematical functions\n\n\n\nbessel_k:\n \nMathematical functions\n\n\n\nbessel_y:\n \nMathematical functions\n\n\n\nbeta:\n \nMathematical functions\n\n\n\nBLAS_LIBS:\n \nUsing Makevars\n\n\n\nbrowser:\n \nBrowsing\n\n\nC\n\n\n\n\n\n\nCAAR:\n \nCalling .External\n\n\n\nCAD4R:\n \nCalling .External\n\n\n\nCAD5R:\n \nCalling .External\n\n\n\nCADDDR:\n \nCalling .External\n\n\n\nCADDR:\n \nCalling .External\n\n\n\nCADR:\n \nCalling .External\n\n\n\nCalloc:\n \nUser-controlled memory\n\n\n\nCallocCharBuf:\n \nUser-controlled memory\n\n\n\nCAR:\n \nCalling .External\n\n\n\nCDAR:\n \nCalling .External\n\n\n\nCDDDR:\n \nCalling .External\n\n\n\nCDDR:\n \nCalling .External\n\n\n\nCDR:\n \nCalling .External\n\n\n\ncgmin:\n \nOptimization\n\n\n\nchoose:\n \nMathematical functions\n\n\n\nCITATION:\n \nPackage subdirectories\n\n\n\nCITATION:\n \nPreparing translations\n\n\n\nclassgets:\n \nClasses\n\n\n\nCleanEd:\n \nSetting R callbacks\n\n\n\ncoerceVector:\n \nDetails of R types\n\n\n\nCOMPLEX:\n \nVector accessor functions\n\n\n\nCONS:\n \nSome convenience functions\n\n\n\ncons:\n \nSome convenience functions\n\n\n\nCOPYRIGHTS:\n \nThe DESCRIPTION file\n\n\n\nCOPYRIGHTS:\n \nPackage subdirectories\n\n\n\ncospi:\n \nNumerical Utilities\n\n\n\ncPsort:\n \nUtility functions\n\n\nD\n\n\n\n\n\n\ndblepr:\n \nPrinting from Fortran\n\n\n\ndblepr1:\n \nPrinting from Fortran\n\n\n\ndebug:\n \nDebugging R code\n\n\n\ndebugger:\n \nDebugging R code\n\n\n\ndefineVar:\n \nFinding and setting variables\n\n\n\ndigamma:\n \nMathematical functions\n\n\n\ndimgets:\n \nAttributes\n\n\n\ndimnamesgets:\n \nAttributes\n\n\n\ndpsifn:\n \nMathematical functions\n\n\n\ndump.frames:\n \nDebugging R code\n\n\n\nduplicate:\n \nNamed objects and copying\n\n\n\ndyn.load:\n \ndyn.load and dyn.unload\n\n\n\ndyn.unload:\n \ndyn.load and dyn.unload\n\n\nE\n\n\n\n\n\n\nelt:\n \nSome convenience functions\n\n\n\nerror:\n \nError signaling\n\n\n\nerrorcall:\n \nError signaling\n\n\n\neval:\n \nEvaluating R expressions from C\n\n\n\nexpm1:\n \nNumerical Utilities\n\n\n\nexport:\n \nSpecifying imports and exports\n\n\n\nexportClasses:\n \nNamespaces with S4 classes and methods\n\n\n\nexportClassPattern:\n \nNamespaces with S4 classes and methods\n\n\n\nexportMethods:\n \nNamespaces with S4 classes and methods\n\n\n\nexportPattern:\n \nSpecifying imports and exports\n\n\n\nexportPattern:\n \nNamespaces with S4 classes and methods\n\n\n\nexp_rand:\n \nRandom numbers\n\n\nF\n\n\n\n\n\n\nFALSE:\n \nMathematical constants\n\n\n\nfindFun:\n \nEvaluating R expressions from C\n\n\n\nfindInterval:\n \nUtility functions\n\n\n\nfindInterval2(double*:\n \nUtility functions\n\n\n\nfindVar:\n \nFinding and setting variables\n\n\n\nFLIBS:\n \nUsing Makevars\n\n\n\nfmax2:\n \nNumerical Utilities\n\n\n\nfmin2:\n \nNumerical Utilities\n\n\n\nfprec:\n \nNumerical Utilities\n\n\n\nfpu_setup:\n \nSetting R callbacks\n\n\n\nFree:\n \nUser-controlled memory\n\n\n\nfround:\n \nNumerical Utilities\n\n\n\nfsign:\n \nNumerical Utilities\n\n\n\nftrunc:\n \nNumerical Utilities\n\n\nG\n\n\n\n\n\n\ngammafn:\n \nMathematical functions\n\n\n\ngctorture:\n \nUsing gctorture\n\n\n\nGetArrayDimnames:\n \nAttributes\n\n\n\ngetAttrib:\n \nAttributes\n\n\n\ngetCharCE:\n \nCharacter encoding issues\n\n\n\nGetColNames:\n \nAttributes\n\n\n\nGetMatrixDimnames:\n \nAttributes\n\n\n\nGetRNGstate:\n \nRandom numbers\n\n\n\nGetRowNames:\n \nAttributes\n\n\nI\n\n\n\n\n\n\nimax2:\n \nNumerical Utilities\n\n\n\nimin2:\n \nNumerical Utilities\n\n\n\nimport:\n \nSpecifying imports and exports\n\n\n\nimportClassesFrom:\n \nNamespaces with S4 classes and methods\n\n\n\nimportFrom:\n \nSpecifying imports and exports\n\n\n\nimportMethodsFrom:\n \nNamespaces with S4 classes and methods\n\n\n\ninstall:\n \nAttributes\n\n\n\ninstallChar:\n \nFinding and setting variables\n\n\n\nINTEGER:\n \nVector accessor functions\n\n\n\nintegr_fn:\n \nIntegration\n\n\n\nintpr:\n \nPrinting from Fortran\n\n\n\nintpr1:\n \nPrinting from Fortran\n\n\n\niPsort:\n \nUtility functions\n\n\n\nisArray:\n \nSome convenience functions\n\n\n\nisComplex:\n \nDetails of R types\n\n\n\nisEnvironment:\n \nDetails of R types\n\n\n\nisExpression:\n \nDetails of R types\n\n\n\nisFactor:\n \nSome convenience functions\n\n\n\nisFunction:\n \nSome convenience functions\n\n\n\nisInteger:\n \nDetails of R types\n\n\n\nisLanguage:\n \nSome convenience functions\n\n\n\nisList:\n \nSome convenience functions\n\n\n\nisLogical:\n \nDetails of R types\n\n\n\nisMatrix:\n \nSome convenience functions\n\n\n\nISNA:\n \nMissing and special values\n\n\n\nISNA:\n \nMissing and IEEE values\n\n\n\nISNAN:\n \nMissing and special values\n\n\n\nISNAN:\n \nMissing and IEEE values\n\n\n\nisNewList:\n \nSome convenience functions\n\n\n\nisNull:\n \nDetails of R types\n\n\n\nisNumeric:\n \nSome convenience functions\n\n\n\nisObject:\n \nSome convenience functions\n\n\n\nisOrdered:\n \nSome convenience functions\n\n\n\nisPairList:\n \nSome convenience functions\n\n\n\nisPrimitive:\n \nSome convenience functions\n\n\n\nisReal:\n \nDetails of R types\n\n\n\nisString:\n \nDetails of R types\n\n\n\nisSymbol:\n \nDetails of R types\n\n\n\nisTs:\n \nSome convenience functions\n\n\n\nisUnordered:\n \nSome convenience functions\n\n\n\nisVector:\n \nSome convenience functions\n\n\n\nisVectorAtomic:\n \nSome convenience functions\n\n\n\nisVectorList:\n \nSome convenience functions\n\n\nL\n\n\n\n\n\n\nlabelpr:\n \nPrinting from Fortran\n\n\n\nlang1:\n \nSome convenience functions\n\n\n\nlang2:\n \nSome convenience functions\n\n\n\nlang3:\n \nSome convenience functions\n\n\n\nlang4:\n \nSome convenience functions\n\n\n\nlang5:\n \nSome convenience functions\n\n\n\nlang6:\n \nSome convenience functions\n\n\n\nLAPACK_LIBS:\n \nUsing Makevars\n\n\n\nlastElt:\n \nSome convenience functions\n\n\n\nlbeta:\n \nMathematical functions\n\n\n\nlbfgsb:\n \nOptimization\n\n\n\nlchoose:\n \nMathematical functions\n\n\n\nLCONS:\n \nSome convenience functions\n\n\n\nlcons:\n \nSome convenience functions\n\n\n\nlgamma1p:\n \nNumerical Utilities\n\n\n\nlgammafn:\n \nMathematical functions\n\n\n\nlibrary.dynam:\n \nPackage subdirectories\n\n\n\nlibrary.dynam:\n \ndyn.load and dyn.unload\n\n\n\nlist1:\n \nSome convenience functions\n\n\n\nlist2:\n \nSome convenience functions\n\n\n\nlist3:\n \nSome convenience functions\n\n\n\nlist4:\n \nSome convenience functions\n\n\n\nlist5:\n \nSome convenience functions\n\n\n\nlist6:\n \nSome convenience functions\n\n\n\nlog1mexp:\n \nNumerical Utilities\n\n\n\nlog1p:\n \nNumerical Utilities\n\n\n\nlog1pexp:\n \nNumerical Utilities\n\n\n\nlog1pmx:\n \nNumerical Utilities\n\n\n\nLOGICAL:\n \nVector accessor functions\n\n\n\nlogspace_add:\n \nNumerical Utilities\n\n\n\nlogspace_sub:\n \nNumerical Utilities\n\n\n\nlogspace_sum:\n \nNumerical Utilities\n\n\nM\n\n\n\n\n\n\nMARK_NOT_MUTABLE:\n \nNamed objects and copying\n\n\n\nMAYBE_REFERENCED:\n \nNamed objects and copying\n\n\n\nMAYBE_SHARED:\n \nNamed objects and copying\n\n\n\nMemcpy:\n \nUser-controlled memory\n\n\n\nMemzero:\n \nUser-controlled memory\n\n\n\nmkChar:\n \nHandling character data\n\n\n\nmkCharCE:\n \nCharacter encoding issues\n\n\n\nmkCharLen:\n \nHandling character data\n\n\n\nmkCharLenCE:\n \nCharacter encoding issues\n\n\n\nmkString:\n \nSome convenience functions\n\n\n\nM_E:\n \nMathematical constants\n\n\n\nM_PI:\n \nMathematical constants\n\n\nN\n\n\n\n\n\n\nnamesgets:\n \nAttributes\n\n\n\nNA_REAL:\n \nMissing and IEEE values\n\n\n\nNEWS.Rd:\n \nPackage subdirectories\n\n\n\nnmmin:\n \nOptimization\n\n\n\nnorm_rand:\n \nRandom numbers\n\n\n\nnrows:\n \nTransient storage allocation\n\n\n\nnthcdr:\n \nSome convenience functions\n\n\nO\n\n\n\n\n\n\nOBJECTS:\n \nUsing Makevars\n\n\n\nOBJECTS:\n \nCreating shared objects\n\n\n\nonintr:\n \nCalling R.dll directly\n\n\n\noptimfn:\n \nOptimization\n\n\n\noptimgr:\n \nOptimization\n\n\nP\n\n\n\n\n\n\npentagamma:\n \nMathematical functions\n\n\n\nPKG_CFLAGS:\n \nCreating shared objects\n\n\n\nPKG_CPPFLAGS:\n \nCreating shared objects\n\n\n\nPKG_CXXFLAGS:\n \nCreating shared objects\n\n\n\nPKG_FCFLAGS:\n \nUsing F9x code\n\n\n\nPKG_FFLAGS:\n \nCreating shared objects\n\n\n\nPKG_LIBS:\n \nCreating shared objects\n\n\n\nPKG_OBJCFLAGS:\n \nCreating shared objects\n\n\n\nPKG_OBJCXXFLAGS:\n \nCreating shared objects\n\n\n\nPRINTNAME:\n \nCalling .External\n\n\n\nPrintValue:\n \nInspecting R objects\n\n\n\nprompt:\n \nRd format\n\n\n\nPROTECT:\n \nGarbage Collection\n\n\n\nprotect:\n \nGarbage Collection\n\n\n\nPROTECT_WITH_INDEX:\n \nGarbage Collection\n\n\n\npsigamma:\n \nMathematical functions\n\n\n\nPutRNGstate:\n \nRandom numbers\n\n\nQ\n\n\n\n\n\n\nqsort3:\n \nUtility functions\n\n\n\nqsort4:\n \nUtility functions\n\n\nR\n\n\n\n\n\n\nR CMD build:\n \nBuilding package tarballs\n\n\n\nR CMD check:\n \nChecking packages\n\n\n\nR CMD config:\n \nConfigure and cleanup\n\n\n\nR CMD Rd2pdf:\n \nProcessing documentation files\n\n\n\nR CMD Rdconv:\n \nProcessing documentation files\n\n\n\nR CMD SHLIB:\n \nCreating shared objects\n\n\n\nR CMD Stangle:\n \nProcessing documentation files\n\n\n\nR CMD Sweave:\n \nProcessing documentation files\n\n\n\nRAW:\n \nVector accessor functions\n\n\n\nrchkusr:\n \nAllowing interrupts\n\n\n\nRdqagi:\n \nIntegration\n\n\n\nRdqags:\n \nIntegration\n\n\n\nREAL:\n \nVector accessor functions\n\n\n\nRealloc:\n \nUser-controlled memory\n\n\n\nrealpr:\n \nPrinting from Fortran\n\n\n\nrealpr1:\n \nPrinting from Fortran\n\n\n\nrecover:\n \nDebugging R code\n\n\n\nreEnc:\n \nCharacter encoding issues\n\n\n\nREprintf:\n \nPrinting\n\n\n\nREPROTECT:\n \nGarbage Collection\n\n\n\nREvprintf:\n \nPrinting\n\n\n\nrevsort:\n \nUtility functions\n\n\n\nRf_endEmbeddedR:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_initEmbeddedR:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_initialize_R:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_KillAllDevices:\n \nSetting R callbacks\n\n\n\nRf_mainloop:\n \nEmbedding R under Unix-alikes\n\n\n\nRiconv:\n \nRe-encoding\n\n\n\nRiconv_close:\n \nRe-encoding\n\n\n\nRiconv_open:\n \nRe-encoding\n\n\n\nRprintf:\n \nPrinting\n\n\n\nRprof:\n \nProfiling R code for speed\n\n\n\nRprof:\n \nMemory statistics from Rprof\n\n\n\nRprofmem:\n \nTracking memory allocations\n\n\n\nrPsort:\n \nUtility functions\n\n\n\nrsort_with_index:\n \nUtility functions\n\n\n\nRtanpi:\n \nNumerical Utilities\n\n\n\nrun_Rmainloop:\n \nEmbedding R under Unix-alikes\n\n\n\nRvprintf:\n \nPrinting\n\n\n\nR_addhistory:\n \nSetting R callbacks\n\n\n\nR_alloc:\n \nTransient storage allocation\n\n\n\nR_allocLD:\n \nTransient storage allocation\n\n\n\nR_Busy:\n \nSetting R callbacks\n\n\n\nR_Calloc:\n \nUser-controlled memory\n\n\n\nR_CheckUserInterrupt:\n \nAllowing interrupts\n\n\n\nR_ChooseFile:\n \nSetting R callbacks\n\n\n\nR_CleanTempDir:\n \nSetting R callbacks\n\n\n\nR_CleanUp:\n \nSetting R callbacks\n\n\n\nR_ClearerrConsole:\n \nSetting R callbacks\n\n\n\nR_ClearExternalPtr:\n \nExternal pointers and weak references\n\n\n\nR_compute_identical:\n \nSemi-internal convenience functions\n\n\n\nR_ContinueUnwind:\n \nCondition handling and cleanup code\n\n\n\nR_csort:\n \nUtility functions\n\n\n\nR_dataentry:\n \nSetting R callbacks\n\n\n\nR_dataviewer:\n \nSetting R callbacks\n\n\n\nR_DefParams:\n \nCalling R.dll directly\n\n\n\nR_DefParamsEx:\n \nCalling R.dll directly\n\n\n\nR_dot_Last:\n \nSetting R callbacks\n\n\n\nR_EditFile:\n \nSetting R callbacks\n\n\n\nR_EditFiles:\n \nSetting R callbacks\n\n\n\nR_ExpandFileName:\n \nUtility functions\n\n\n\nR_ExternalPtrAddr:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrAddrFn:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrProtected:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrTag:\n \nExternal pointers and weak references\n\n\n\nR_FINITE:\n \nMissing and IEEE values\n\n\n\nR_FlushConsole:\n \nSetting R callbacks\n\n\n\nR_forceSymbols:\n \nRegistering native routines\n\n\n\nR_Free:\n \nUser-controlled memory\n\n\n\nR_free_tmpnam:\n \nUtility functions\n\n\n\nR_GetCCallable:\n \nLinking to native routines in other packages\n\n\n\nR_GetCurrentEnv:\n \nEvaluating R expressions from C\n\n\n\nR_GetCurrentSrcref:\n \nAccessing source references\n\n\n\nR_getEmbeddingDllInfo:\n \nRegistering symbols\n\n\n\nR_GetSrcFilename:\n \nAccessing source references\n\n\n\nR_INLINE:\n \nInlining C functions\n\n\n\nR_IsNaN:\n \nMissing and IEEE values\n\n\n\nR_isort:\n \nUtility functions\n\n\n\nR_LIBRARY_DIR:\n \nConfigure and cleanup\n\n\n\nR_loadhistory:\n \nSetting R callbacks\n\n\n\nR_MakeExternalPtr:\n \nExternal pointers and weak references\n\n\n\nR_MakeExternalPtrFn:\n \nExternal pointers and weak references\n\n\n\nR_MakeUnwindCont:\n \nCondition handling and cleanup code\n\n\n\nR_MakeWeakRef:\n \nExternal pointers and weak references\n\n\n\nR_MakeWeakRefC:\n \nExternal pointers and weak references\n\n\n\nR_max_col:\n \nUtility functions\n\n\n\nR_NegInf:\n \nMissing and IEEE values\n\n\n\nR_NewEnv:\n \nFinding and setting variables\n\n\n\nR_NewPreciousMSet:\n \nGarbage Collection\n\n\n\nR_orderVector:\n \nUtility functions\n\n\n\nR_orderVector1:\n \nUtility functions\n\n\n\nR_PACKAGE_DIR:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_DIR:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_NAME:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_NAME:\n \nConfigure and cleanup\n\n\n\nR_ParseVector:\n \nParsing R code from C\n\n\n\nR_PolledEvents:\n \nMeshing event loops\n\n\n\nR_PosInf:\n \nMissing and IEEE values\n\n\n\nR_pow:\n \nNumerical Utilities\n\n\n\nR_pow_di:\n \nNumerical Utilities\n\n\n\nR_PreserveInMSet:\n \nGarbage Collection\n\n\n\nR_PreserveObject:\n \nGarbage Collection\n\n\n\nR_ProcessEvents:\n \nCalling R.dll directly\n\n\n\nR_ProtectWithIndex:\n \nGarbage Collection\n\n\n\nR_PV:\n \nInspecting R objects\n\n\n\nR_qsort:\n \nUtility functions\n\n\n\nR_qsort_I:\n \nUtility functions\n\n\n\nR_qsort_int:\n \nUtility functions\n\n\n\nR_qsort_int_I:\n \nUtility functions\n\n\n\nR_ReadConsole:\n \nSetting R callbacks\n\n\n\nR_Realloc:\n \nUser-controlled memory\n\n\n\nR_RegisterCCallable:\n \nLinking to native routines in other packages\n\n\n\nR_RegisterCFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_RegisterCFinalizerEx:\n \nExternal pointers and weak references\n\n\n\nR_RegisterFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_RegisterFinalizerEx:\n \nExternal pointers and weak references\n\n\n\nR_registerRoutines:\n \nRegistering native routines\n\n\n\nR_ReleaseFromMSet:\n \nGarbage Collection\n\n\n\nR_ReleaseObject:\n \nGarbage Collection\n\n\n\nR_ReplDLLdo1:\n \nEmbedding R under Unix-alikes\n\n\n\nR_ReplDLLinit:\n \nEmbedding R under Unix-alikes\n\n\n\nR_Reprotect:\n \nGarbage Collection\n\n\n\nR_ResetConsole:\n \nSetting R callbacks\n\n\n\nR_rsort:\n \nUtility functions\n\n\n\nR_RunExitFinalizers:\n \nSetting R callbacks\n\n\n\nR_RunWeakRefFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_SaveGlobalEnv:\n \nSetting R callbacks\n\n\n\nR_savehistory:\n \nSetting R callbacks\n\n\n\nR_selectlist:\n \nSetting R callbacks\n\n\n\nR_SetExternalPtrAddr:\n \nExternal pointers and weak references\n\n\n\nR_SetExternalPtrProtected:\n \nExternal pointers and weak references\n\n\n\nR_SetExternalPtrTag:\n \nExternal pointers and weak references\n\n\n\nR_SetParams:\n \nCalling R.dll directly\n\n\n\nR_setStartTime:\n \nCalling R.dll directly\n\n\n\nR_set_command_line_arguments:\n \nCalling R.dll directly\n\n\n\nR_ShowFiles:\n \nSetting R callbacks\n\n\n\nR_ShowMessage:\n \nSetting R callbacks\n\n\n\nR_Srcref:\n \nAccessing source references\n\n\n\nR_Suicide:\n \nSetting R callbacks\n\n\n\nR_tmpnam:\n \nUtility functions\n\n\n\nR_tmpnam2:\n \nUtility functions\n\n\n\nR_tryCatch:\n \nCondition handling and cleanup code\n\n\n\nR_tryCatchError:\n \nCondition handling and cleanup code\n\n\n\nR_unif_index:\n \nRandom numbers\n\n\n\nR_UnwindProtect:\n \nCondition handling and cleanup code\n\n\n\nR_useDynamicSymbols:\n \nRegistering native routines\n\n\n\nR_Version:\n \nPlatform and version information\n\n\n\nR_wait_usec:\n \nMeshing event loops\n\n\n\nR_WeakRefKey:\n \nExternal pointers and weak references\n\n\n\nR_WeakRefValue:\n \nExternal pointers and weak references\n\n\n\nR_withCallingErrorHandler:\n \nCondition handling and cleanup code\n\n\n\nR_WriteConsole:\n \nSetting R callbacks\n\n\n\nR_WriteConsoleEx:\n \nSetting R callbacks\n\n\nS\n\n\n\n\n\n\nS3method:\n \nRegistering S3 methods\n\n\n\nSAFE_FFLAGS:\n \nUsing Makevars\n\n\n\nsamin:\n \nOptimization\n\n\n\nScalarComplex:\n \nSome convenience functions\n\n\n\nScalarInteger:\n \nSome convenience functions\n\n\n\nScalarLogical:\n \nSome convenience functions\n\n\n\nScalarRaw:\n \nSome convenience functions\n\n\n\nScalarReal:\n \nSome convenience functions\n\n\n\nScalarString:\n \nSome convenience functions\n\n\n\nsetAttrib:\n \nAttributes\n\n\n\nSETCAD4R:\n \nCalling .External\n\n\n\nSETCADDDR:\n \nCalling .External\n\n\n\nSETCADDR:\n \nCalling .External\n\n\n\nSETCADR:\n \nCalling .External\n\n\n\nSETCAR:\n \nCalling .External\n\n\n\nSETCDR:\n \nCalling .External\n\n\n\nsetup_Rmainloop:\n \nCalling R.dll directly\n\n\n\nsetVar:\n \nFinding and setting variables\n\n\n\nSET_STRING_ELT:\n \nHandling character data\n\n\n\nSET_TAG:\n \nEvaluating R expressions from C\n\n\n\nSET_VECTOR_ELT:\n \nVector accessor functions\n\n\n\nsign:\n \nNumerical Utilities\n\n\n\nsignrank_free:\n \nDistribution functions\n\n\n\nsinpi:\n \nNumerical Utilities\n\n\n\nstr2type:\n \nSome convenience functions\n\n\n\nSTRING_ELT:\n \nHandling character data\n\n\n\nsummaryRprof:\n \nMemory statistics from Rprof\n\n\n\nsystem:\n \nOperating system access\n\n\n\nsystem.time:\n \nOperating system access\n\n\n\nsystem2:\n \nOperating system access\n\n\n\nS_alloc:\n \nTransient storage allocation\n\n\n\nS_realloc:\n \nTransient storage allocation\n\n\nT\n\n\n\n\n\n\nTAG:\n \nCalling .External\n\n\n\ntanpi:\n \nNumerical Utilities\n\n\n\ntetragamma:\n \nMathematical functions\n\n\n\ntrace:\n \nDebugging R code\n\n\n\ntraceback:\n \nDebugging R code\n\n\n\ntracemem:\n \nTracing copies of an object\n\n\n\ntranslateChar:\n \nCharacter encoding issues\n\n\n\ntranslateCharUTF8:\n \nCharacter encoding issues\n\n\n\ntrigamma:\n \nMathematical functions\n\n\n\nTRUE:\n \nMathematical constants\n\n\n\ntype2char:\n \nSome convenience functions\n\n\n\ntype2str:\n \nSome convenience functions\n\n\n\nTYPEOF:\n \nCalling .External\n\n\nU\n\n\n\n\n\n\nundebug:\n \nDebugging R code\n\n\n\nunif_rand:\n \nRandom numbers\n\n\n\nUNPROTECT:\n \nGarbage Collection\n\n\n\nunprotect:\n \nGarbage Collection\n\n\n\nUNPROTECT_PTR:\n \nGarbage Collection\n\n\n\nunprotect_ptr:\n \nGarbage Collection\n\n\n\nuntracemem:\n \nTracing copies of an object\n\n\n\nuseDynLib:\n \nuseDynLib\n\n\nV\n\n\n\n\n\n\nVECTOR_ELT:\n \nVector accessor functions\n\n\n\nvmaxget:\n \nTransient storage allocation\n\n\n\nvmaxset:\n \nTransient storage allocation\n\n\n\nvmmin:\n \nOptimization\n\n\nW\n\n\n\n\n\n\nwarning:\n \nError signaling\n\n\n\nwarningcall:\n \nError signaling\n\n\n\nwarningcall_immediate:\n \nError signaling\n\n\n\nwilcox_free:\n \nDistribution functions\n\n\n\n\n\n\nJump to:  \n.   \\  \nA   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   V   W" + "text": "Jump to:  \n.   \\  \nA   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   V   W  \n\n\n\n\n\n\n\nIndex Entry\n \nSection\n\n\n.\n\n\n\n\n\n\n.C:\n \nInterface functions .C and .Fortran\n\n\n\n.Call:\n \nHandling R objects in C\n\n\n\n.Call:\n \nCalling .Call\n\n\n\n.External:\n \nHandling R objects in C\n\n\n\n.External:\n \nCalling .External\n\n\n\n.Fortran:\n \nInterface functions .C and .Fortran\n\n\n\n.Last.lib:\n \nLoad hooks\n\n\n\n.onAttach:\n \nLoad hooks\n\n\n\n.onDetach:\n \nLoad hooks\n\n\n\n.onLoad:\n \nLoad hooks\n\n\n\n.onUnload:\n \nLoad hooks\n\n\n\n.Random.seed:\n \nRandom numbers\n\n\n\\\n\n\n\n\n\n\n\\abbr:\n \nMarking text\n\n\n\n\\acronym:\n \nMarking text\n\n\n\n\\alias:\n \nDocumenting functions\n\n\n\n\\arguments:\n \nDocumenting functions\n\n\n\n\\author:\n \nDocumenting functions\n\n\n\n\\bold:\n \nMarking text\n\n\n\n\\cite:\n \nMarking text\n\n\n\n\\code:\n \nMarking text\n\n\n\n\\command:\n \nMarking text\n\n\n\n\\concept:\n \nIndices\n\n\n\n\\cr:\n \nSectioning\n\n\n\n\\CRANpkg{pkg}:  \n[User-defined m\nacros](Writing-R-documentation-files.html#user-defined-macros)\n\n\n\n\\deqn:\n \nMathematics\n\n\n\n\\describe:\n \nLists and tables\n\n\n\n\\description:\n \nDocumenting functions\n\n\n\n\\details:\n \nDocumenting functions\n\n\n\n\\dfn:\n \nMarking text\n\n\n\n\\doi{numbers}:  \n[User-defined m\nacros](Writing-R-documentation-files.html#user-defined-macros)\n\n\n\n\\dontrun:\n \nDocumenting functions\n\n\n\n\\dontshow:\n \nDocumenting functions\n\n\n\n\\dots:\n \nInsertions\n\n\n\n\\dQuote:\n \nMarking text\n\n\n\n\\email:\n \nMarking text\n\n\n\n\\emph:\n \nMarking text\n\n\n\n\\enc:\n \nInsertions\n\n\n\n\\enumerate:\n \nLists and tables\n\n\n\n\\env:\n \nMarking text\n\n\n\n\\eqn:\n \nMathematics\n\n\n\n\\examples:\n \nDocumenting functions\n\n\n\n\\figure:\n \nFigures\n\n\n\n\\file:\n \nMarking text\n\n\n\n\\format:\n \nDocumenting data sets\n\n\n\n\\href:\n \nMarking text\n\n\n\n\\if:\n \nConditional text\n\n\n\n\\ifelse:\n \nConditional text\n\n\n\n\\itemize:\n \nLists and tables\n\n\n\n\\kbd:\n \nMarking text\n\n\n\n\\keyword:\n \nDocumenting functions\n\n\n\n\\ldots:\n \nInsertions\n\n\n\n\\link:\n \nCross-references\n\n\n\n\\method:\n \nDocumenting functions\n\n\n\n\\name:\n \nDocumenting functions\n\n\n\n\\newcommand:\n \nUser-defined macros\n\n\n\n\\note:\n \nDocumenting functions\n\n\n\n\\option:\n \nMarking text\n\n\n\n\\out:\n \nConditional text\n\n\n\n\\packageAuthor:\n \nUser-defined macros\n\n\n\n\\packageDescription:\n \nUser-defined macros\n\n\n\n\\packageDESCRIPTION:\n \nUser-defined macros\n\n\n\n\\packageIndices:\n \nUser-defined macros\n\n\n\n\\packageMaintainer:\n \nUser-defined macros\n\n\n\n\\packageTitle:\n \nUser-defined macros\n\n\n\n\\pkg:\n \nMarking text\n\n\n\n\\preformatted:\n \nMarking text\n\n\n\n\\R:\n \nInsertions\n\n\n\n\\RdOpts:\n \nDynamic pages\n\n\n\n\\references:\n \nDocumenting functions\n\n\n\n\\renewcommand:\n \nUser-defined macros\n\n\n\n\\S3method:\n \nDocumenting functions\n\n\n\n\\samp:\n \nMarking text\n\n\n\n\\section:\n \nSectioning\n\n\n\n\\seealso:\n \nDocumenting functions\n\n\n\n\\Sexpr:\n \nDynamic pages\n\n\n\n\\source:\n \nDocumenting data sets\n\n\n\n\\sQuote:\n \nMarking text\n\n\n\n\\sspace:\n \nUser-defined macros\n\n\n\n\\strong:\n \nMarking text\n\n\n\n\\tabular:\n \nLists and tables\n\n\n\n\\title:\n \nDocumenting functions\n\n\n\n\\url:\n \nMarking text\n\n\n\n\\usage:\n \nDocumenting functions\n\n\n\n\\value:\n \nDocumenting functions\n\n\n\n\\var:\n \nMarking text\n\n\n\n\\verb:\n \nMarking text\n\n\nA\n\n\n\n\n\n\nallocList:\n \nEvaluating R expressions from C\n\n\n\nallocMatrix:\n \nCalculating numerical derivatives\n\n\n\nallocVector:\n \nAllocating storage\n\n\n\nany_duplicated:\n \nSemi-internal convenience functions\n\n\n\nany_duplicated3:\n \nSemi-internal convenience functions\n\n\n\nasChar:\n \nSome convenience functions\n\n\n\nasComplex:\n \nSome convenience functions\n\n\n\nasInteger:\n \nSome convenience functions\n\n\n\nasLogical:\n \nSome convenience functions\n\n\n\nasReal:\n \nSome convenience functions\n\n\n\nAUTHORS:\n \nPackage subdirectories\n\n\nB\n\n\n\n\n\n\nbessel_i:\n \nMathematical functions\n\n\n\nbessel_j:\n \nMathematical functions\n\n\n\nbessel_k:\n \nMathematical functions\n\n\n\nbessel_y:\n \nMathematical functions\n\n\n\nbeta:\n \nMathematical functions\n\n\n\nBLAS_LIBS:\n \nUsing Makevars\n\n\n\nbrowser:\n \nBrowsing\n\n\nC\n\n\n\n\n\n\nCAAR:\n \nCalling .External\n\n\n\nCAD4R:\n \nCalling .External\n\n\n\nCAD5R:\n \nCalling .External\n\n\n\nCADDDR:\n \nCalling .External\n\n\n\nCADDR:\n \nCalling .External\n\n\n\nCADR:\n \nCalling .External\n\n\n\nCalloc:\n \nUser-controlled memory\n\n\n\nCallocCharBuf:\n \nUser-controlled memory\n\n\n\nCAR:\n \nCalling .External\n\n\n\nCDAR:\n \nCalling .External\n\n\n\nCDDDR:\n \nCalling .External\n\n\n\nCDDR:\n \nCalling .External\n\n\n\nCDR:\n \nCalling .External\n\n\n\ncgmin:\n \nOptimization\n\n\n\nchoose:\n \nMathematical functions\n\n\n\nCITATION:\n \nPackage subdirectories\n\n\n\nCITATION:\n \nPreparing translations\n\n\n\nclassgets:\n \nClasses\n\n\n\nCleanEd:\n \nSetting R callbacks\n\n\n\ncoerceVector:\n \nDetails of R types\n\n\n\nCOMPLEX:\n \nVector accessor functions\n\n\n\nCONS:\n \nSome convenience functions\n\n\n\ncons:\n \nSome convenience functions\n\n\n\nCOPYRIGHTS:\n \nThe DESCRIPTION file\n\n\n\nCOPYRIGHTS:\n \nPackage subdirectories\n\n\n\ncospi:\n \nNumerical Utilities\n\n\n\ncPsort:\n \nUtility functions\n\n\nD\n\n\n\n\n\n\ndblepr:\n \nPrinting from Fortran\n\n\n\ndblepr1:\n \nPrinting from Fortran\n\n\n\ndebug:\n \nDebugging R code\n\n\n\ndebugger:\n \nDebugging R code\n\n\n\ndefineVar:\n \nFinding and setting variables\n\n\n\ndigamma:\n \nMathematical functions\n\n\n\ndimgets:\n \nAttributes\n\n\n\ndimnamesgets:\n \nAttributes\n\n\n\ndpsifn:\n \nMathematical functions\n\n\n\ndump.frames:\n \nDebugging R code\n\n\n\nduplicate:\n \nNamed objects and copying\n\n\n\ndyn.load:\n \ndyn.load and dyn.unload\n\n\n\ndyn.unload:\n \ndyn.load and dyn.unload\n\n\nE\n\n\n\n\n\n\nelt:\n \nSome convenience functions\n\n\n\nerror:\n \nError signaling\n\n\n\nerrorcall:\n \nError signaling\n\n\n\neval:\n \nEvaluating R expressions from C\n\n\n\nexpm1:\n \nNumerical Utilities\n\n\n\nexport:\n \nSpecifying imports and exports\n\n\n\nexportClasses:\n \nNamespaces with S4 classes and methods\n\n\n\nexportClassPattern:\n \nNamespaces with S4 classes and methods\n\n\n\nexportMethods:\n \nNamespaces with S4 classes and methods\n\n\n\nexportPattern:\n \nSpecifying imports and exports\n\n\n\nexportPattern:\n \nNamespaces with S4 classes and methods\n\n\n\nexp_rand:\n \nRandom numbers\n\n\nF\n\n\n\n\n\n\nFALSE:\n \nMathematical constants\n\n\n\nfindFun:\n \nEvaluating R expressions from C\n\n\n\nfindInterval:\n \nUtility functions\n\n\n\nfindInterval2(double*:\n \nUtility functions\n\n\n\nfindVar:\n \nFinding and setting variables\n\n\n\nFLIBS:\n \nUsing Makevars\n\n\n\nfmax2:\n \nNumerical Utilities\n\n\n\nfmin2:\n \nNumerical Utilities\n\n\n\nfprec:\n \nNumerical Utilities\n\n\n\nfpu_setup:\n \nSetting R callbacks\n\n\n\nFree:\n \nUser-controlled memory\n\n\n\nfround:\n \nNumerical Utilities\n\n\n\nfsign:\n \nNumerical Utilities\n\n\n\nftrunc:\n \nNumerical Utilities\n\n\nG\n\n\n\n\n\n\ngammafn:\n \nMathematical functions\n\n\n\ngctorture:\n \nUsing gctorture\n\n\n\nGetArrayDimnames:\n \nAttributes\n\n\n\ngetAttrib:\n \nAttributes\n\n\n\ngetCharCE:\n \nCharacter encoding issues\n\n\n\nGetColNames:\n \nAttributes\n\n\n\nGetMatrixDimnames:\n \nAttributes\n\n\n\nGetRNGstate:\n \nRandom numbers\n\n\n\nGetRowNames:\n \nAttributes\n\n\nI\n\n\n\n\n\n\nimax2:\n \nNumerical Utilities\n\n\n\nimin2:\n \nNumerical Utilities\n\n\n\nimport:\n \nSpecifying imports and exports\n\n\n\nimportClassesFrom:\n \nNamespaces with S4 classes and methods\n\n\n\nimportFrom:\n \nSpecifying imports and exports\n\n\n\nimportMethodsFrom:\n \nNamespaces with S4 classes and methods\n\n\n\ninstall:\n \nAttributes\n\n\n\ninstallChar:\n \nFinding and setting variables\n\n\n\nINTEGER:\n \nVector accessor functions\n\n\n\nintegr_fn:\n \nIntegration\n\n\n\nintpr:\n \nPrinting from Fortran\n\n\n\nintpr1:\n \nPrinting from Fortran\n\n\n\niPsort:\n \nUtility functions\n\n\n\nisArray:\n \nSome convenience functions\n\n\n\nisComplex:\n \nDetails of R types\n\n\n\nisEnvironment:\n \nDetails of R types\n\n\n\nisExpression:\n \nDetails of R types\n\n\n\nisFactor:\n \nSome convenience functions\n\n\n\nisFunction:\n \nSome convenience functions\n\n\n\nisInteger:\n \nDetails of R types\n\n\n\nisLanguage:\n \nSome convenience functions\n\n\n\nisList:\n \nSome convenience functions\n\n\n\nisLogical:\n \nDetails of R types\n\n\n\nisMatrix:\n \nSome convenience functions\n\n\n\nISNA:\n \nMissing and special values\n\n\n\nISNA:\n \nMissing and IEEE values\n\n\n\nISNAN:\n \nMissing and special values\n\n\n\nISNAN:\n \nMissing and IEEE values\n\n\n\nisNewList:\n \nSome convenience functions\n\n\n\nisNull:\n \nDetails of R types\n\n\n\nisNumeric:\n \nSome convenience functions\n\n\n\nisObject:\n \nSome convenience functions\n\n\n\nisOrdered:\n \nSome convenience functions\n\n\n\nisPairList:\n \nSome convenience functions\n\n\n\nisPrimitive:\n \nSome convenience functions\n\n\n\nisReal:\n \nDetails of R types\n\n\n\nisString:\n \nDetails of R types\n\n\n\nisSymbol:\n \nDetails of R types\n\n\n\nisTs:\n \nSome convenience functions\n\n\n\nisUnordered:\n \nSome convenience functions\n\n\n\nisVector:\n \nSome convenience functions\n\n\n\nisVectorAtomic:\n \nSome convenience functions\n\n\n\nisVectorList:\n \nSome convenience functions\n\n\nL\n\n\n\n\n\n\nlabelpr:\n \nPrinting from Fortran\n\n\n\nlang1:\n \nSome convenience functions\n\n\n\nlang2:\n \nSome convenience functions\n\n\n\nlang3:\n \nSome convenience functions\n\n\n\nlang4:\n \nSome convenience functions\n\n\n\nlang5:\n \nSome convenience functions\n\n\n\nlang6:\n \nSome convenience functions\n\n\n\nLAPACK_LIBS:\n \nUsing Makevars\n\n\n\nlastElt:\n \nSome convenience functions\n\n\n\nlbeta:\n \nMathematical functions\n\n\n\nlbfgsb:\n \nOptimization\n\n\n\nlchoose:\n \nMathematical functions\n\n\n\nLCONS:\n \nSome convenience functions\n\n\n\nlcons:\n \nSome convenience functions\n\n\n\nlgamma1p:\n \nNumerical Utilities\n\n\n\nlgammafn:\n \nMathematical functions\n\n\n\nlibrary.dynam:\n \nPackage subdirectories\n\n\n\nlibrary.dynam:\n \ndyn.load and dyn.unload\n\n\n\nlist1:\n \nSome convenience functions\n\n\n\nlist2:\n \nSome convenience functions\n\n\n\nlist3:\n \nSome convenience functions\n\n\n\nlist4:\n \nSome convenience functions\n\n\n\nlist5:\n \nSome convenience functions\n\n\n\nlist6:\n \nSome convenience functions\n\n\n\nlog1mexp:\n \nNumerical Utilities\n\n\n\nlog1p:\n \nNumerical Utilities\n\n\n\nlog1pexp:\n \nNumerical Utilities\n\n\n\nlog1pmx:\n \nNumerical Utilities\n\n\n\nLOGICAL:\n \nVector accessor functions\n\n\n\nlogspace_add:\n \nNumerical Utilities\n\n\n\nlogspace_sub:\n \nNumerical Utilities\n\n\n\nlogspace_sum:\n \nNumerical Utilities\n\n\nM\n\n\n\n\n\n\nMARK_NOT_MUTABLE:\n \nNamed objects and copying\n\n\n\nMAYBE_REFERENCED:\n \nNamed objects and copying\n\n\n\nMAYBE_SHARED:\n \nNamed objects and copying\n\n\n\nMemcpy:\n \nUser-controlled memory\n\n\n\nMemzero:\n \nUser-controlled memory\n\n\n\nmkChar:\n \nHandling character data\n\n\n\nmkCharCE:\n \nCharacter encoding issues\n\n\n\nmkCharLen:\n \nHandling character data\n\n\n\nmkCharLenCE:\n \nCharacter encoding issues\n\n\n\nmkString:\n \nSome convenience functions\n\n\n\nM_E:\n \nMathematical constants\n\n\n\nM_PI:\n \nMathematical constants\n\n\nN\n\n\n\n\n\n\nnamesgets:\n \nAttributes\n\n\n\nNA_REAL:\n \nMissing and IEEE values\n\n\n\nNEWS.Rd:\n \nPackage subdirectories\n\n\n\nnmmin:\n \nOptimization\n\n\n\nnorm_rand:\n \nRandom numbers\n\n\n\nnrows:\n \nTransient storage allocation\n\n\n\nnthcdr:\n \nSome convenience functions\n\n\nO\n\n\n\n\n\n\nOBJECTS:\n \nUsing Makevars\n\n\n\nOBJECTS:\n \nCreating shared objects\n\n\n\nonintr:\n \nCalling R.dll directly\n\n\n\noptimfn:\n \nOptimization\n\n\n\noptimgr:\n \nOptimization\n\n\nP\n\n\n\n\n\n\npentagamma:\n \nMathematical functions\n\n\n\nPKG_CFLAGS:\n \nCreating shared objects\n\n\n\nPKG_CPPFLAGS:\n \nCreating shared objects\n\n\n\nPKG_CXXFLAGS:\n \nCreating shared objects\n\n\n\nPKG_FCFLAGS:\n \nUsing F9x code\n\n\n\nPKG_FFLAGS:\n \nCreating shared objects\n\n\n\nPKG_LIBS:\n \nCreating shared objects\n\n\n\nPKG_OBJCFLAGS:\n \nCreating shared objects\n\n\n\nPKG_OBJCXXFLAGS:\n \nCreating shared objects\n\n\n\nPRINTNAME:\n \nCalling .External\n\n\n\nPrintValue:\n \nInspecting R objects\n\n\n\nprompt:\n \nRd format\n\n\n\nPROTECT:\n \nGarbage Collection\n\n\n\nprotect:\n \nGarbage Collection\n\n\n\nPROTECT_WITH_INDEX:\n \nGarbage Collection\n\n\n\npsigamma:\n \nMathematical functions\n\n\n\nPutRNGstate:\n \nRandom numbers\n\n\nQ\n\n\n\n\n\n\nqsort3:\n \nUtility functions\n\n\n\nqsort4:\n \nUtility functions\n\n\nR\n\n\n\n\n\n\nR CMD build:\n \nBuilding package tarballs\n\n\n\nR CMD check:\n \nChecking packages\n\n\n\nR CMD config:\n \nConfigure and cleanup\n\n\n\nR CMD Rd2pdf:\n \nProcessing documentation files\n\n\n\nR CMD Rdconv:\n \nProcessing documentation files\n\n\n\nR CMD SHLIB:\n \nCreating shared objects\n\n\n\nR CMD Stangle:\n \nProcessing documentation files\n\n\n\nR CMD Sweave:\n \nProcessing documentation files\n\n\n\nRAW:\n \nVector accessor functions\n\n\n\nrchkusr:\n \nAllowing interrupts\n\n\n\nRdqagi:\n \nIntegration\n\n\n\nRdqags:\n \nIntegration\n\n\n\nREAL:\n \nVector accessor functions\n\n\n\nRealloc:\n \nUser-controlled memory\n\n\n\nrealpr:\n \nPrinting from Fortran\n\n\n\nrealpr1:\n \nPrinting from Fortran\n\n\n\nrecover:\n \nDebugging R code\n\n\n\nreEnc:\n \nCharacter encoding issues\n\n\n\nREprintf:\n \nPrinting\n\n\n\nREPROTECT:\n \nGarbage Collection\n\n\n\nREvprintf:\n \nPrinting\n\n\n\nrevsort:\n \nUtility functions\n\n\n\nRf_endEmbeddedR:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_initEmbeddedR:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_initialize_R:\n \nEmbedding R under Unix-alikes\n\n\n\nRf_KillAllDevices:\n \nSetting R callbacks\n\n\n\nRf_mainloop:\n \nEmbedding R under Unix-alikes\n\n\n\nRiconv:\n \nRe-encoding\n\n\n\nRiconv_close:\n \nRe-encoding\n\n\n\nRiconv_open:\n \nRe-encoding\n\n\n\nRprintf:\n \nPrinting\n\n\n\nRprof:\n \nProfiling R code for speed\n\n\n\nRprof:\n \nMemory statistics from Rprof\n\n\n\nRprofmem:\n \nTracking memory allocations\n\n\n\nrPsort:\n \nUtility functions\n\n\n\nrsort_with_index:\n \nUtility functions\n\n\n\nRtanpi:\n \nNumerical Utilities\n\n\n\nrun_Rmainloop:\n \nEmbedding R under Unix-alikes\n\n\n\nRvprintf:\n \nPrinting\n\n\n\nR_addhistory:\n \nSetting R callbacks\n\n\n\nR_alloc:\n \nTransient storage allocation\n\n\n\nR_allocLD:\n \nTransient storage allocation\n\n\n\nR_Busy:\n \nSetting R callbacks\n\n\n\nR_Calloc:\n \nUser-controlled memory\n\n\n\nR_CheckUserInterrupt:\n \nAllowing interrupts\n\n\n\nR_ChooseFile:\n \nSetting R callbacks\n\n\n\nR_CleanTempDir:\n \nSetting R callbacks\n\n\n\nR_CleanUp:\n \nSetting R callbacks\n\n\n\nR_ClearerrConsole:\n \nSetting R callbacks\n\n\n\nR_ClearExternalPtr:\n \nExternal pointers and weak references\n\n\n\nR_compute_identical:\n \nSemi-internal convenience functions\n\n\n\nR_ContinueUnwind:\n \nCondition handling and cleanup code\n\n\n\nR_csort:\n \nUtility functions\n\n\n\nR_dataentry:\n \nSetting R callbacks\n\n\n\nR_dataviewer:\n \nSetting R callbacks\n\n\n\nR_DefParams:\n \nCalling R.dll directly\n\n\n\nR_DefParamsEx:\n \nCalling R.dll directly\n\n\n\nR_dot_Last:\n \nSetting R callbacks\n\n\n\nR_EditFile:\n \nSetting R callbacks\n\n\n\nR_EditFiles:\n \nSetting R callbacks\n\n\n\nR_ExpandFileName:\n \nUtility functions\n\n\n\nR_ExternalPtrAddr:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrAddrFn:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrProtected:\n \nExternal pointers and weak references\n\n\n\nR_ExternalPtrTag:\n \nExternal pointers and weak references\n\n\n\nR_FINITE:\n \nMissing and IEEE values\n\n\n\nR_FlushConsole:\n \nSetting R callbacks\n\n\n\nR_forceSymbols:\n \nRegistering native routines\n\n\n\nR_Free:\n \nUser-controlled memory\n\n\n\nR_free_tmpnam:\n \nUtility functions\n\n\n\nR_GetCCallable:\n \nLinking to native routines in other packages\n\n\n\nR_GetCurrentEnv:\n \nEvaluating R expressions from C\n\n\n\nR_GetCurrentSrcref:\n \nAccessing source references\n\n\n\nR_getEmbeddingDllInfo:\n \nRegistering symbols\n\n\n\nR_GetSrcFilename:\n \nAccessing source references\n\n\n\nR_INLINE:\n \nInlining C functions\n\n\n\nR_IsNaN:\n \nMissing and IEEE values\n\n\n\nR_isort:\n \nUtility functions\n\n\n\nR_LIBRARY_DIR:\n \nConfigure and cleanup\n\n\n\nR_loadhistory:\n \nSetting R callbacks\n\n\n\nR_MakeExternalPtr:\n \nExternal pointers and weak references\n\n\n\nR_MakeExternalPtrFn:\n \nExternal pointers and weak references\n\n\n\nR_MakeUnwindCont:\n \nCondition handling and cleanup code\n\n\n\nR_MakeWeakRef:\n \nExternal pointers and weak references\n\n\n\nR_MakeWeakRefC:\n \nExternal pointers and weak references\n\n\n\nR_max_col:\n \nUtility functions\n\n\n\nR_NegInf:\n \nMissing and IEEE values\n\n\n\nR_NewEnv:\n \nFinding and setting variables\n\n\n\nR_NewPreciousMSet:\n \nGarbage Collection\n\n\n\nR_orderVector:\n \nUtility functions\n\n\n\nR_orderVector1:\n \nUtility functions\n\n\n\nR_PACKAGE_DIR:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_DIR:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_NAME:\n \nConfigure and cleanup\n\n\n\nR_PACKAGE_NAME:\n \nConfigure and cleanup\n\n\n\nR_ParseVector:\n \nParsing R code from C\n\n\n\nR_PolledEvents:\n \nMeshing event loops\n\n\n\nR_PosInf:\n \nMissing and IEEE values\n\n\n\nR_pow:\n \nNumerical Utilities\n\n\n\nR_pow_di:\n \nNumerical Utilities\n\n\n\nR_PreserveInMSet:\n \nGarbage Collection\n\n\n\nR_PreserveObject:\n \nGarbage Collection\n\n\n\nR_ProcessEvents:\n \nCalling R.dll directly\n\n\n\nR_ProtectWithIndex:\n \nGarbage Collection\n\n\n\nR_PV:\n \nInspecting R objects\n\n\n\nR_qsort:\n \nUtility functions\n\n\n\nR_qsort_I:\n \nUtility functions\n\n\n\nR_qsort_int:\n \nUtility functions\n\n\n\nR_qsort_int_I:\n \nUtility functions\n\n\n\nR_ReadConsole:\n \nSetting R callbacks\n\n\n\nR_Realloc:\n \nUser-controlled memory\n\n\n\nR_RegisterCCallable:\n \nLinking to native routines in other packages\n\n\n\nR_RegisterCFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_RegisterCFinalizerEx:\n \nExternal pointers and weak references\n\n\n\nR_RegisterFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_RegisterFinalizerEx:\n \nExternal pointers and weak references\n\n\n\nR_registerRoutines:\n \nRegistering native routines\n\n\n\nR_ReleaseFromMSet:\n \nGarbage Collection\n\n\n\nR_ReleaseObject:\n \nGarbage Collection\n\n\n\nR_ReplDLLdo1:\n \nEmbedding R under Unix-alikes\n\n\n\nR_ReplDLLinit:\n \nEmbedding R under Unix-alikes\n\n\n\nR_Reprotect:\n \nGarbage Collection\n\n\n\nR_ResetConsole:\n \nSetting R callbacks\n\n\n\nR_rsort:\n \nUtility functions\n\n\n\nR_RunExitFinalizers:\n \nSetting R callbacks\n\n\n\nR_RunWeakRefFinalizer:\n \nExternal pointers and weak references\n\n\n\nR_SaveGlobalEnv:\n \nSetting R callbacks\n\n\n\nR_savehistory:\n \nSetting R callbacks\n\n\n\nR_selectlist:\n \nSetting R callbacks\n\n\n\nR_SetExternalPtrAddr:\n \nExternal pointers and weak references\n\n\n\nR_SetExternalPtrProtected:\n \nExternal pointers and weak references\n\n\n\nR_SetExternalPtrTag:\n \nExternal pointers and weak references\n\n\n\nR_SetParams:\n \nCalling R.dll directly\n\n\n\nR_setStartTime:\n \nCalling R.dll directly\n\n\n\nR_set_command_line_arguments:\n \nCalling R.dll directly\n\n\n\nR_ShowFiles:\n \nSetting R callbacks\n\n\n\nR_ShowMessage:\n \nSetting R callbacks\n\n\n\nR_Srcref:\n \nAccessing source references\n\n\n\nR_Suicide:\n \nSetting R callbacks\n\n\n\nR_tmpnam:\n \nUtility functions\n\n\n\nR_tmpnam2:\n \nUtility functions\n\n\n\nR_tryCatch:\n \nCondition handling and cleanup code\n\n\n\nR_tryCatchError:\n \nCondition handling and cleanup code\n\n\n\nR_unif_index:\n \nRandom numbers\n\n\n\nR_UnwindProtect:\n \nCondition handling and cleanup code\n\n\n\nR_useDynamicSymbols:\n \nRegistering native routines\n\n\n\nR_Version:\n \nPlatform and version information\n\n\n\nR_wait_usec:\n \nMeshing event loops\n\n\n\nR_WeakRefKey:\n \nExternal pointers and weak references\n\n\n\nR_WeakRefValue:\n \nExternal pointers and weak references\n\n\n\nR_withCallingErrorHandler:\n \nCondition handling and cleanup code\n\n\n\nR_WriteConsole:\n \nSetting R callbacks\n\n\n\nR_WriteConsoleEx:\n \nSetting R callbacks\n\n\nS\n\n\n\n\n\n\nS3method:\n \nRegistering S3 methods\n\n\n\nSAFE_FFLAGS:\n \nUsing Makevars\n\n\n\nsamin:\n \nOptimization\n\n\n\nScalarComplex:\n \nSome convenience functions\n\n\n\nScalarInteger:\n \nSome convenience functions\n\n\n\nScalarLogical:\n \nSome convenience functions\n\n\n\nScalarRaw:\n \nSome convenience functions\n\n\n\nScalarReal:\n \nSome convenience functions\n\n\n\nScalarString:\n \nSome convenience functions\n\n\n\nsetAttrib:\n \nAttributes\n\n\n\nSETCAD4R:\n \nCalling .External\n\n\n\nSETCADDDR:\n \nCalling .External\n\n\n\nSETCADDR:\n \nCalling .External\n\n\n\nSETCADR:\n \nCalling .External\n\n\n\nSETCAR:\n \nCalling .External\n\n\n\nSETCDR:\n \nCalling .External\n\n\n\nsetup_Rmainloop:\n \nCalling R.dll directly\n\n\n\nsetVar:\n \nFinding and setting variables\n\n\n\nSET_STRING_ELT:\n \nHandling character data\n\n\n\nSET_TAG:\n \nEvaluating R expressions from C\n\n\n\nSET_VECTOR_ELT:\n \nVector accessor functions\n\n\n\nsign:\n \nNumerical Utilities\n\n\n\nsignrank_free:\n \nDistribution functions\n\n\n\nsinpi:\n \nNumerical Utilities\n\n\n\nstr2type:\n \nSome convenience functions\n\n\n\nSTRING_ELT:\n \nHandling character data\n\n\n\nsummaryRprof:\n \nMemory statistics from Rprof\n\n\n\nsystem:\n \nOperating system access\n\n\n\nsystem.time:\n \nOperating system access\n\n\n\nsystem2:\n \nOperating system access\n\n\n\nS_alloc:\n \nTransient storage allocation\n\n\n\nS_realloc:\n \nTransient storage allocation\n\n\nT\n\n\n\n\n\n\nTAG:\n \nCalling .External\n\n\n\ntanpi:\n \nNumerical Utilities\n\n\n\ntetragamma:\n \nMathematical functions\n\n\n\ntrace:\n \nDebugging R code\n\n\n\ntraceback:\n \nDebugging R code\n\n\n\ntracemem:\n \nTracing copies of an object\n\n\n\ntranslateChar:\n \nCharacter encoding issues\n\n\n\ntranslateCharUTF8:\n \nCharacter encoding issues\n\n\n\ntrigamma:\n \nMathematical functions\n\n\n\nTRUE:\n \nMathematical constants\n\n\n\ntype2char:\n \nSome convenience functions\n\n\n\ntype2str:\n \nSome convenience functions\n\n\n\nTYPEOF:\n \nCalling .External\n\n\nU\n\n\n\n\n\n\nundebug:\n \nDebugging R code\n\n\n\nunif_rand:\n \nRandom numbers\n\n\n\nUNPROTECT:\n \nGarbage Collection\n\n\n\nunprotect:\n \nGarbage Collection\n\n\n\nUNPROTECT_PTR:\n \nGarbage Collection\n\n\n\nunprotect_ptr:\n \nGarbage Collection\n\n\n\nuntracemem:\n \nTracing copies of an object\n\n\n\nuseDynLib:\n \nuseDynLib\n\n\nV\n\n\n\n\n\n\nVECTOR_ELT:\n \nVector accessor functions\n\n\n\nvmaxget:\n \nTransient storage allocation\n\n\n\nvmaxset:\n \nTransient storage allocation\n\n\n\nvmmin:\n \nOptimization\n\n\nW\n\n\n\n\n\n\nwarning:\n \nError signaling\n\n\n\nwarningcall:\n \nError signaling\n\n\n\nwarningcall_immediate:\n \nError signaling\n\n\n\nwilcox_free:\n \nDistribution functions\n\n\n\n\n\n\nJump to:  \n.   \\  \nA   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   V   W" }, { "objectID": "Concept-index.html",