Various R Programming Tools

Functions to assist in R programming, including: - assist in developing, updating, and maintaining R and R packages ('ask', 'checkRVersion', 'getDependencies', 'keywords', 'scat'), - calculate the logit and inverse logit transformations ('logit', 'inv.logit'), - test if a value is missing, empty or contains only NA and NULL values ('invalid'), - manipulate R's .Last function ('addLast'), - define macros ('defmacro'), - detect odd and even integers ('odd', 'even'), - convert strings containing non-ASCII characters (like single quotes) to plain ASCII ('ASCIIfy'), - perform a binary search ('binsearch'), - sort strings containing both numeric and character components ('mixedsort'), - create a factor variable from the quantiles of a continuous variable ('quantcut'), - enumerate permutations and combinations ('combinations', 'permutation'), - calculate and convert between fold-change and log-ratio ('foldchange', 'logratio2foldchange', 'foldchange2logratio'), - calculate probabilities and generate random numbers from Dirichlet distributions ('rdirichlet', 'ddirichlet'), - apply a function over adjacent subsets of a vector ('running'), - modify the TCP\_NODELAY ('de-Nagle') flag for socket objects, - efficient 'rbind' of data frames, even if the column names don't match ('smartbind'), - generate significance stars from p-values ('stars.pval'), - convert characters to/from ASCII codes ('asc', 'chr'), - convert character vector to ASCII representation ('ASCIIfy'), - apply title capitalization rules to a character vector ('capwords').


gtools 3.8.1 - 2018-06-21

Behind the scenes:

  • Remove softlinks per request from Uwe Ligges

gtools 3.8.0 - 2018-06-20

New functions:

  • spit_path(): converts a file path into a vector of path components
  • baseOf(): Transform an integer to an array of base-n digits

Behind the scenes:

  • Update C calls to use correct 'PACKAGE=' parameter.
  • Explicitly register C routines used by the package
  • Update link for taxise::taxize_capwords in gtools::capwords man page
  • Corrections to typographical errors

gtools 3.7.0 - 2017-06-14

New functions:

  • Add capwords() function to apply standard capitalization rules to a character string.


  • Add 'con' argument to ask() to allow specification of the connection to query for input. For use under RStudio, use ask(..., con=file('stdin')).

  • R/na.replace.R, man/na.replace.Rd: na.replace() now accepts a function to provide the replcement value.

  • smartbind() has a new argument 'list' to pass a list of data frames, /instead of/in addition to/ data frames as arguments.

  • Internal changes to bring code up to current CRAN guidelines.

Bug Fixes:

  • smartbind() now works properly with empty column names

  • Correct error in smartbind() when column types don't match.

  • Fix bug in smartbind's handling of factor levels.

  • Improve assignment of default names in smartbind().

  • loadedPackages() to return data silently so that the results don't get printed twice.

gtools 3.5.0 - 2015-04-28

New Functions:

  • New roman2int() functon to convert roman numerals to integers without the range restriction of utils::as.roman().

  • New asc() and chr() functions to convert between ASCII codes and characters. (Based on the 'Data Debrief' blog entry for 2011-03-09 at

  • New unByteCode() and unByteCodeAssign() functions to convert a byte-code functon to an interpeted code function.

  • New assignEdgewise() function for making assignments into locked environments. (Used by unByteCodeAssign().)


  • mixedsort() and mixedorder() now have arguments 'decreasing', 'na.last', and 'blank.last' arguments to control sort ordering.

  • mixedsort() and mixedirdeR() now support Roman numerals via the arguments 'numeric.type', and ''. (Request by David Winsemius, suggested code changes by Henrik Bengtsson.)

  • speed up mixedorder() (and hence mixedsort()) by moving suppressWarnings() outside of lapply loops. (Suggestion by Henrik Bengtsson.)

  • The 'q' argument to quantcut() now accept an integer indicating the number of equally spaced quantile groups to create. (Suggestion and patch submitted by Ryan C. Thompson.)

Bug fixes:

  • Removed stray browser() call in smartbind().

  • ddirichlet(x, alpha) was incorrectly returning NA when for any i, x[i]=0 and alpha[i]=1. (Bug report by John Nolan.)

Other changes:

  • Correct typographical errors in package description.

gtools 3.4.2 - 2015-04-06

New features:

  • New function loadedPackages() to display name, version, and path of loaded packages (package namespaces).

  • New function: na.replace() to replace missing values within a vector with a specified value.`

Bug fixes:

  • Modify keywords() to work properly in R 3.4.X and later.

gtools 3.4.1 - 2014-05-27

Bug fixes:

  • smartbind() now converts all non-atomic type columns (except factor) to type character instead of generating an opaque error message.

Other changes:

  • the argument to ASCIIfy() is now named 'x' instead of 'string'.

  • minor formatting changes to ASCIIfy() man page.

gtools 3.4.0 - 2014-04-14

New features:

  • New ASCIIfy() function to converts character vectors to ASCII representation by escaping them as \x00 or \u0000 codes. Contributed by Arni Magnusson.

gtools 3.3.1 - 2014-03-01

Bug fixes:

  • 'mixedorder' (and hence 'mixedsort') not properly handling single-character strings between numbers, so that '1a2' was being handled as a single string rather than being properly handled as c('1', 'a', '2').

gtools 3.3.0 - 2014-02-11

New features:

  • Add the getDependencies() function to return a list of dependencies for the specified package(s). Includes arguments to control whether these dependencies should be constructed using information from locally installed packages ('installed', default is TRUE), avilable CRAN packages ('available', default is TRUE) and whether to include base ('base', default=FALSE) and recommended ('recommended', default is FALSE) packages.

Bug fixes:

  • binsearch() was returning the wrong endpoint & value when the found value was at the upper endpoint.

gtools 3.2.1 - 2014-01-13

Bug fixes:

  • Resolve circular dependency with gdata

gtools 3.2.0 - 2014-01-11

New features:

  • The keywords() function now accepts a function or function name as an argument and will return the list of keywords associated with the named function.

  • New function stars.pval() which will generate p-value significance symbols ('*', '', etc.)

Bug fixes:

  • R/mixedsort.R: mixedorder() was failing to correctly handle numbers including decimals due to a faulty regular expression.

Other changes:

  • capture() and sprint() are now defunct.

gtools 3.1.1 - 2013-11-06

Bug fixes:

  • Fix problem with mixedorder/mixedsort when there is zero or one elements in the argument vector.

gtools 3.1.0 - 2013-09-22

Major changes:

  • The function 'addLast()' (deprecated since gtools 3.0.0) is no longer available, and has been marked defunct.

Bug fixes:

  • Modified 'mixedorder()' to use Use 'suppressWarnings() instead of 'options(warn=-1)'. This will avoid egregious warning messages when called from within a nested environment, such as when run from within 'knitr'

gtools 3.0.0 - 2013-07-06

Major changes:

  • The function 'addLast()' has been deprecated because it directly manipulates the global environment, which is expressly prohibited by the CRAN policies.

  • A new function, 'lastAdd()' has been created to replace 'addLast()'. The name has been changed because the two functions require different syntax. 'addLast()' was used like this:

    byeWorld <- function() cat("\nGoodbye World!\n") addLast(byeWorld)

    The new 'lastAdd()' function is used like this:

    byeWorld <- function() cat("\nGoodbye World!\n") .Last <- lastAdd(byeWorld)

Bug fixes:

  • Update checkRVersion() to work with R version 3.0.0 and later.

Other changes:

  • Remove cross-reference to (obsolete?) moc package

  • The function 'assert()' (deprecated since gtools 2.5.0) is no longer available and has been marked defunct.

gtools 2.7.1 - 2013-03-17

Bug fixes:

  • smartbind() was not properly handling factor columns when the first data frame did not include the relevant column.

gtools 2.7.0 - 2012-06-19

New features:

  • smartbind() has a new 'sep' argument to allow specification of the character(s) used to separate components of constructed column names

  • smartbind() has a new 'verbose' argument to provide details on how coluumns are being processed

Bug fixes:

  • smartbind() has been enhanced to improve handling of factor and ordered factor columns.

gtools 2.6.2 - 2011-09-28

New features:

  • Add 'fill' argument to smartbind() to specify a value to use for missing entries.

gtools 2.6.1

New features:

  • Add newVersionAvailable() function to compare running and latest available R versions.

  • Add keywords() function to show $RHOME/doc/KEYWORDS file

Bug fixes:

  • Correct windows make flags as suggested by Brian Ripley.

  • Update Greg's email address and fix Rd syntax errors

gtools 2.5.0

New features:

  • Add checkRVersion() function to determin if a newer version of R is available.

  • Deprecated assert() in favor of base::stopifnot

Bug fixes:

  • Fix bug in binsearch() identified by 2.6.0 R CMD CHECK

Other changes:

  • Improve text explanation of how defmacro() and strmacro() differ from function().

  • Update definitions of odd() and even() to use modulus operator instead of division.

gtools 2.4.0

  • Add binsearch() function, previously in the genetics() package.

gtools 2.3.1

  • Add ask() function to prompt the user and collect a single response.

gtools 2.3.0

  • Update email address for Greg

  • Add new 'smartbind' function, which combines data frames efficiently, even if they have different column names.

gtools 2.2.3

  • setTCPNoDelay now compiles & works properly on Windows

gtools 2.2.2

  • src/setTCPNoDelay.c: Add C source code for setTCPNoDelay.

  • NAMESPACE: Add UseDynLib to NAMESPACE so the shared library gets properly loaded.

  • Updated Greg's email address.

gtools 2.2.1

  • New function 'addLast' that adds functions to R's .Last() so that they will be executed when R is terminating.

  • New function setTCPNoDelay() that allows the TCP_NODELAY flag to be changed on socket objects.

gtools 2.1.0

  • Added assert.R (and documentation)

  • Added the defmacro() function, extracted from Lumley T. "Programmer's Niche: Macros in {R}", R News, 2001, Vol 1, No. 3, pp 11--13, \url{}

  • Added DESCRIPTION and removed

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


3.9.2 by Gregory R. Warnes, 5 months ago

Report a bug at

Browse source code at

Authors: Gregory R. Warnes , Ben Bolker , and Thomas Lumley

Documentation:   PDF Manual  

GPL-2 license

Depends on methods, stats, utils

Suggests car, gplots, knitr, rstudioapi, SGP, taxize

Imported by BAMBI, BayesFactor, BradleyTerry2, CARBayesST, CausalQueries, CeRNASeek, ClickClustCont, CloneSeeker, CoClust, CoImp, CoMiRe, ConsRank, CoopGame, EBMAforecast, ExtremalDep, GGMselect, GenEst, HKprocess, HyperG, ISAT, IsoCheck, LINselect, MEPDF, MRPC, MSRDT, MaOEA, MarkowitzR, MicroSEC, MuViCP, NSM3, NetMix, OWEA, OmicInt, PLMIX, PSSMCOOL, PSW, PolyPatEx, PopED, Qtools, RAQSAPI, RCPmod, RI2by2, RankAggreg, ReDirection, RegularizedSCA, RevEcoR, Rlda, RobMixReg, SGP, SSHAARP, STEPCAM, SensoMineR, SourceSet, SparseLPM, TcGSA, TiPS, TraMineRextras, aRchi, archiDART, atmopt, baycn, bikm1, binovisualfields, bmotif, bootnet, bpcs, bpgmm, bumblebee, coalitions, combiroc, communication, conStruct, conting, coopProductGame, cooptrees, crov, digitalDLSorteR, dirichletprocess, drc, dtp, dynpanel, easylabel, econullnetr, ecospat, erp.easy, escalation, expSBM, factormodel, fastLink, flexsurvcure, frequency, fwildclusterboot, gambin, gdata, gplots, grapesAgri1, gwdegree, hier.part, hierfstat, highMLR, iSTATS, icensBKL, imputeMulti, joineRmeta, kamila, knockoff, learnPopGen, ltmix, mapaccuracy, mau, mcMST, meaRtools, metaMix, mgm, microhaplot, microsamplingDesign, minimaxdesign, mixedMem, modcmfitr, modnets, muHVT, mulset, mvtmeta, nardl, netSEM, netchain, nima, noisySBM, nparMD, paleobioDB, pcsstools, phenopix,, polySegratioMM, ppsbm, qgraph, r4ss, randomUniformForest, rcompendium, rdtLite, reservoir, revpref, rsyncrosim, rubias, shinystan, sourceR, spANOVA, ss3sim, staRdom, starvz, stockR, supcluster, svs, textmineR, tidylda, tigger, trialr, validata, veccompare, visualFields, vortexR, votesys.

Depended on by ASMap, Biocomb, ClusterR, DisHet, GESTr, GSM, GameTheory, HUM, IDPSurvival, JASPAR, MDplot, MasterBayes, MetabolAnalyze, NBBttest, NonParRolCor, PairViz, REQS, RolWinMulCor, SummaryLasso, Ultimixt, collpcm, crossdes, dice, genetics, iCluster, integr, interferenceCI, iteRates, modMax, muma, orQA, ordinalpattern, rmpw, rpsychi, rvHPDT, sensory, trioGxE.

Suggested by BayesMallows, CohortPlat, DOBAD, GLMcat, HistData, LSAmitR, QFASA, R.filesets, codalm, epigraphdb, fdapace, gmodels, httk, idiogramFISH, lcra, mdw, nonparaeff, paleofire, rattle, sensitivity, vhica.

See at CRAN