Hmisc Package Change Log

This change log is now handled by CVS. See it here.

1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004


Submitted hmisc.readme,zip,table.of.contents to statlib 7Nov96

11Nov96 Added ... to end of argument list for,impute)

14Nov96 Fixed lty and col handling in plsmo, added datadensity

16Nov96 Added label.curves and scat1d options pass thru, in plsmo Added y= in scat1d

21Nov96 Corrected help for labcurve regarding keyloc

13Dec96 - re-sent to statlib (deposited in /incoming), installed by M Meyer Deposited Hmisc.shar UNIX version of 11Dec96

28Dec96 - added ylim option to gbayes, improved documentation

29Dec96 - Hmisc announcement to s-news, examples of sedit

30Dec96 - Added README to Hmisc.make.shar, sent README (minus table.of. contents) to Mike Meyer for separate entry Added authors to Overview Truncated README.UNIX, point to Overview Added INSTALL.UNIX (on BCR these are /suserlib/README,INSTALL) Added stores() to store.s


3Jan97 - Added pl= add= xlab, ylab, parameters in curves for labcurve

7Jan97 - Improved help for labcurve, ps.slide

13Mar97 - Added rugs option to

1Apr97 - Added add= in plot.rm.boot

7Apr97 - Re source()'d impute.s - did not have update adding ... to argument list

22Apr97 - Added note in both help files for sas.get re library(chron)

2May97 - Added NOFMTERR to sas.get for Windows

5May97 - Improved SGI install instructions in install.unix

12May97 - Added titanic and titanic2 data frames

26May97 - Fixed in label.s Added,times,dates in model.frame.default.s, [.* - omitted from S+ Fixed describe to respect date formatting Improved First.lib.s for Windows help (Jens' correction)

8Jun97 - Added llist in label

14Jun97 - Warning in labcurve if too few points for to show somers2 help - added reference to rcorr.cens

25Jun97 - Changed fraction argument in ecdf to what argument

30Jun97 - Improved bpplot in several ways, improved symbol.freq

2Jul97 - Improved rm.boot help file and fixed bug with 'x random'

13Jul97 - Fixed labcurve to use component labels if pl=T - Added spower

16Jul97 - Moved gompertz2 into spower, renamed it Gompertz2 Added Lognorm2 to spower

17Jul97 - Fixed bug in spearman.test, spearman in handling factor var. Added bootkm

20Jul97 - Added datadensity function (under scat1d)

22Jul97 - Fixed warning() bug in rm.boot

23Jul97 - Created object files for Windows for Hmisc using Watcom 11.0 Fortran and C compilers, stored them as .ob4 files, modified .First.lib for Hmisc to load .obj or .ob4 depending on whether using S-Plus 3.x for Windows or 4.x

29Jul97 - Fixed in scat1d to handle date variables (weakly)

4Aug97 - Changed error to warning re: program logic error in plot.rm.boot

12Aug97 - Added changecase function

22Aug97 - Added jitter2, enhanced scat1d, by Jens Oehlschlaegel-Akiyoshi Provides options to preserve ordering of data value when jittering

20Sep97 - Made formats=T the default for sas.get, using changes provided by Mike Kattan Corrected datadensity to avoid abbreviate() (too slow)

3Oct97 - Fixed bug in sas.get for Windows related to previous change: || -> &&; not recognizing presence of format library

12Oct97 - Augmended Overview to document what Hmisc overrides in the system Improved [.factor to drop unused factor levels by default by to suppress this with x <- x[,drop=F] or with options(drop.factor.levels=F)

14Oct97 - Changed .First.lib to print warning about the above

16Oct97 - Fixed .First.lib for UNIX version - had gotten confused with .First.lib for Design

23Oct97 - Enhanced plot.rm.boot to allow multi=T, which makes 12 shaded simultaneous confidence regions for the following levels: .05,.1,.2,.3,.4,.5,.6,.7,.8,.9,.95,.99 Also added subtitles=F option

1Nov97 - Added gs.slide function for setting up nice defaults for graph sheets for S-Plus 4.0, for copying to Microsoft applications

10Nov97 - added abs.error.pred function to compute various measures of predictive ability for linear models, based on absolute errors Changed .First.lib to add a menu button for Hmisc help, for S-Plus 4.0

13Nov97 - Improved menu button for help

14Nov97 - Fixed bug in describe when there are empty cells in a categorical variable (resulted from change in [.factor 12Oct97)

18Nov97: Fixed bug in help button

24Nov97: Added panel.bpplot function Recompiled help files to improve indexing

7Dec97 - Added nout option to panel.bpplot

16Dec97- Made usage of tree() in transcan more reliable by using data=


27Jan98- Fixed sas.get.s for unix to look for formats.sct01 not formats.sct Corrected customized help menu for 4.0 release 3 for Windows

4Feb98 - Changed default trim and iter in plsmo (for the latter, defaults to iter=0 for binary y) Added panel.plsmo for using plsmo with trellis' xyplot

5Feb98 - Disabled help menu button in .First.lib - problem with menus disappearing Fixed panel.plsmo iter=

7Feb98 - Added mgp.axis.labels and changed ps.slide, win.slide, gs.slide to use separate x- and y-axis values for 2nd mgp graphical param. Added trellis.strip.blank function

25Mar98 Took out calls to for all releases of 4.0

27Mar98 Took titanic datasets out of library and put them on web page

28Mar98 Added xYplot function

29Mar98 Corrected print.summary.formula.cross to take new default for [.factor (drop=T) into account

8Apr98 Created wtd.mean, wtd.var, wtd.quantile, wtd.rank. wtd.loess.noiter etc. to handled sample weights/frequencies Modified somers2, describe, ecdf to handle weights Modified Cbind to allow matrix as 2nd argument

17Apr98 Removed [.times from model.frame.default - it's now properly included in S-Plus Defined [.times,[.dates,[.chron in model.frame.default to use latest S-Plus-supplied version of [.times Changed default y-axis tick mark label spacing for mgp.axis.labels to 1.3 instead of .6 when las=1 (in win.slide, gs.slide, ps.slide) Added cumcategory function to use with summary.formula

13May98 Added Des=F to model.frame.default to be consistent with Design Added areg.boot (in transace.s), (in Misc.s) Added summarize (in summary.formula.s)

23May98 Finished documentation for summarize, installed documention for summarize and areg.boot Added shingle in xYplot to get around shingle bug for vectors with class 'labelled'

24May98 Corrected bug in xYplot when Cbind is not used (only a one column y is plotted)

28May98 Added summary.areg.boot, added example output in areg.boot help file

3Jun98 Added warning in .First.lib re drop.factor.levels causing invalid results in multicomp (thanks to Ed Callahan)

4Jun98 Fixed impute.default to do away with warning when length(fill)>1

17Jun98 Added cleanup.import function with sas.get for Windows and UNIX Made sim='spearman' the default in varclus, added logic to automatically merge infrequent levels of categorical predictors, added new function combine.levels for doing this in general

23Jun98 Removed changecase function (system had casefold function) Fixed handling of logical vectors in impute.default

24Jun98 Made help() consistent with 4.0 and 4.5 help so that e.g. ?cut2 works in 4.5

26Jun98 Added Wilson score-test-based confidence limits for a probability in binconf (see Agresti and Coull Amer. Statistician May 1998) - these intervals are more exact (and narrower) than 'exact' Beta or F-based confidence intervals also computed by binconf

Added values and arguments to summary.areg.boot, made estimates be for Y, not transformed Y. Cleaned up code for categorical variables - stored transformation at integer values only. Added linear.predictors and fitted.values to fit object, and added predict.areg.boot function.

30Jun98 Fixed bug in Function.areg.boot Clarified that permission is not granted to use Hmisc in the R system, and that Hmisc requires S-PLUS to run anyway. Had .First.lib create a function hmisc() that will create a valid help button on version 4.x Updated help file for binconf

1Jul98 Fixed bug in xYplot related to groups= with subset= (Thanks to Nick Ellis) Improved help menu button.

7Jul98 Added naplot function to work with naclus

10Jul98 Added multiple imputation to transcan, extended impute.transcan Allowed use of I(variable) in place of asis='variable' in transcan

14Jul98 Fixed type='b' problem (ignoring lwd,lty) in xYplot, got around related bugs in S-PLUS panel.xyplot and panel.superpose functions

15Jul98 Added frame.out to impute.transcan Added fit.mult.impute and functions to transcan

18Jul98 Added labels, lowernames arguments to cleanup.import, fixed bug dealing with is.inf(data variable), added sasdict parameter

23Jul98 Fixed bug in new version of transcan with shrink=T, added residuals to output object, completed documention of multiple imputation facility

3Aug98 Added setps to Hmisc (under ps.slide), add las= to setps Added nres parameter to transcan

10Sep98 Fixed bug in labcurve with respect to getting par() too early when pl=T

2Oct98 Fixed .First.lib to work with S-Plus 3.3

8Oct98 Fixed how NULL stored for trantab in transcan - fixed plot.transcan

21Oct98 Added fit.reps option to fit.mult.impute in transcan

22Oct98 Added pr argument to cleanup.import

6Nov98 Added force.numeric argument to cleanup.import, rounded n1,n2 in bpower.sim so as to not require n to be even

12Nov98 Added trellis version of ecdf Fixed bug in ecdf and xYplot related to missing x values

18Nov98 Checked for inability to use requested # knots in rm.boot Used (faster than in rm.boot

23Nov98 Added plot.summary.formula.reverse method for plotting results for categorical + continuous variables, with automatic creation of Key function Changed dotchart2 to pad labels starting with [ or ending with ] with left justification, because of right justification error with such characters. Changed default for groupfont to 1 (was 3). Added parameter, defaults to cex.labels*1.25 Fixed *.reverse to handle omitted cells Added outer quantiles to quant= for summary.formula (used for plot method only)

27Nov98 rm.boot: sorted data by id, then time
rm.boot GAVE INCORRECT RESULTS IF DATA WERE SORTED BY time Thanks to Marcel Baumgartner for reporting the error Added rho, cor.pattern, xlab, absort.subject.effects arguments Added warning if unequal times across subjects and 'x fixed' used Added ability to estimate correlation function nonparametrically - this is a function of | time_i - time_j |; can also specify the function(time_i, time_j) analytically or as a table lookup rm.boot will use equal correlation or one of the above correlation functions in computing the log-likelihood at each re-sample to get a simult. conf. band without assuming independence within subject.

6Dec98 Worked around bug in wtd.table due to bug in builtin rowsum function. This caused ecdf to occasionally abort

9Dec98 Fixed ecdf.formula to handle NAs when q= is given

19Dec98 Added reShape function, added to Misc.s, added setpdf function

20Dec98 Added creation of topdf() function by setps.

23Dec98 Added Dotplot function to allow for matrix x variable (error bars), slight enhancements to xYplot, Cbind

25Dec98 Added trellis= argument to setps, other related arguments added setTrellis function in xYplot.s


2Jan99 Added histSpike function, added datadensity argument to ecdf histSpike also implements adding smooth kernel density estimates to any of 4 sides of an existing plot

5Jan Added histbackback function of Pat Burns (

9Jan Got plot.areg.boot to not override existing par('mfrow') setting Allowed Cbind to consider 1-column matrix as scalar

11Jan Added data.frame.create.modify.check help file (in Overview and elsewhere)

16Jan Added mChoice to summary.formula too allow analysis of a series of variables representing multiple choices, i.e., each subject can be in more than one category. Can also have a right-hand-side variable that is a matrix whose elements contain 0/1, F/T, "present", "yes"

19Jan Fixed calling setTrellis in setps if trellis=F

21Jan99 Modified print.summary.formula, latex.* to not format(character). Prob. caused by new default for format(char) = rt. justify Modified .First.lib for UNIX to use Hmisc_l.o instead of individual .o object files. Created makefile: MakeHmisc - works with SunOS, Solaris, AIX, most other systems Improved installation instructions (especially for AIX) Got rid of bad character in rcspline.restate.s that got into Hmisc.shar

16Feb Added method='quantiles' to xYplot to plot e.g. median and quartiles of y stratified by x after grouping x into intervals containing an average of `m' observations

16Feb Modified functions that set options() to be in effect after the function is finished to use TEMPORARY=F to be consistent with 5.x Thanks to Don MacQueen,

1Mar Added dataRep function - describes degree to which a new observation was represented in a data frame used to develop a predictive model

13Mar Fixed bug in describe related to subset= in describe.formula, by making describe work in the usually 'method class' fashion. Thanks to Thomas Richards ( Added Lag function (no help file - see Overview)

30Mar Added spearman2 function (under rcorr) to compute generalized adjusted Spearman rho^2 for a series of predictors against a single response. It also has a plot method.

2Apr Changed which= to what= in plot.spearman2, added xlab argument

6Apr Fixed bug involving subsetting on NAs when na.rm=T in summary.formula Thanks to Ralf Herold (

21Apr Fixed bug in dataRep in which empty cells were not dropped

22Apr Added exclude.imputed parameter to spearman2, corrected 'which' error Sense existence of guiCreate in .First.lib to allow Hmisc to run under Sqpe (for ESS, For(), etc.)

28Apr Fixed spearman, spearman2 to return NA if # usable pairs < 3

7May Fixed transcan when n.impute used to correct length error when sampling fewer than nres residuals without replacement

27May Updated na.detail.response to use eval(, local=F) instead of get(objname)

29May Changed model.frame.default to use S-Plus version 4.7 version

30May Added `transformed' argument to transcan: returns NULL instead of matrix of transformed variables if transformed=F Truly implemented boot.method="approximate bayesian"

2Jun Added mgp.axis function, changed histbackback, summary.formula, transace to use it

3Jun Fixed scat1d, dot.chart, ecdf, mulbar,chart, pstamp, rcspline.plot, zoom, summary.formula,, transace to properly restore par() upon exiting Fixed transcan to not invoke Design() with model.frame

Version up to Here Used for S-Plus 2000

24Jun Changed .First.lib to use correct path if not in SHOME

3Aug Fixed line wrapping in Overview help file for Unix (Tim Hesterberg)

19Aug Fixed bug in summary.transcan to correctly print # iterations

27Aug Updated Varcov.glm in transcan as was done in Design.Misc

6Oct Fixed bug in plot.summary.formula.reverse when factor variable has only 2 levels

21Oct Fixed bug in psfig (called by setps) due to different handling of lazy argument evaluation in unix from Win/NT (thanks to Shawn Boles)

Version up to here used for SP2000 service release

18Nov Added character.table() (by Pierre Joyet) to show numeric equivalents to all latin characters

19Nov Changed all class to oldClass, unclass to oldUnclass, defined these functions for pre-S+ 2000 users. Done for compatibility with S-Plus 5.x

20Nov Fixed [.factor to preserve all attributes (besides class,levels)

27Nov Major overhaul of areg.boot, added smearing estimator

28Nov Fixed recent fix in [.factor to handle names() correctly Fixed labcurve to respect labels=F

3Dec Corrected help file for bpower to say that n is the total sample size over the two groups

23Dec Added show.col() (under show.pch) Fixed bug in areg.boot trying to call Design()


17Jan Fixed bug in transcan - for imputing categorical variables when impcat='score' (default), interpolation method was wrong. Also fixed smaller bug when impcat='tree' - the older method used tree with NAs as a category for Y, resulting in different "most probable categories" in some cases. Added treeinfo option.

1Feb Enhanced boot parameter in plot.areg.boot to allow an integer Added nafitted.delete, to work with S+2000 which only had nafitted.exclude. nafitted.default did not reinstate NAs Did not also add to Design this time. Fixed predict.areg.boot to use nafitted to hold places for NAs

10Feb Added formatArgs to print.summary.formula.* to pass arguments such as scientific to format()

12Feb Added rowsumFast in Misc.s, changed spower's logrank() to call it; S+ 2000 forgot to implement 3rd argument

19Feb Fixed sas.get (windows & unix) to work with SAS v7 by making temporary files have .sas extension. Thanks to Claudie Berger <>

20Feb Added lwd= in plsmo

26Feb Fixed major bug in areg.boot: was storing y-transform on a grid of equally spaced points based on the range of untransformed Y; changed to base it on transformed y. Linear interpolation was inadequate for log(y) transform etc. Changed smearingEst to that inverseTrans is really a list in order of (ytransformed,y) as its name should have implied all along. areg.boot now stores as fit1 list(ytransformed,y). Added ytype=c('transformed','inverse') option to Function.areg.boot. Forgot to update version date in .First.lib.

1Mar sas.get for Win/NT: changed dos call to translate / to \\ in file names, when using pkunzip. Fixed bug in handling character formats (thanks to Rob Balshaw <>).

2Mar xYplot: added abline argument, generalized nx parameter, generalized method argument to allow it to be a function such as (see summary.formula).
made safer by constructing names of length 1 if arguments are literal vectors (such as from in xYplot) got around S+ 2000 sapply problem (had made matrix of lists), etc.: added na.rm=T argument

4Mar xYplot: added lty.bands, col.bands, lwd.bands

30Mar Fixed bug in somers2 when weight=0 (thanks - Mike Kattan) Added derived= to fit.mult.impute to allow multiple imputation of basic variables when the model uses derived variables based on these component variables. Added event.chart of Lee, Hess, Dubin (American Statistician Feb 2000) with their kind permission

3Apr Added drawPlot, putKey, putKeyEmpty

17Apr Added error in rm.boot with cor.pattern='estimate' when a time value has only one subject (thanks Peter Imrey <>)

18Apr Added latex.*, format.df (moved from print.display library) Really added event.chart Moved latex.translate from summary.formula to latex.s

19Apr Fixed bug in setps - leftlines was being ignored Added width.factor to dotchart2 - allows used to magnify left margin calculated width

25Apr Re-wrote much of cut2 to better handle lumpy distributions when cut= is not specified (thanks to Vaclav Fidler <> for pointing out the problem)

26Apr Added rowsum.c from Terry Therneau to create .C('S_rowsum'), changed rowsumFast in Misc.s to use S_rowsum instead of C_rowsum (to be compatible with S+ 6.0). This fixes logrank (in spower)

10May Fixed bug in naclus - not handling character vectors

12May Fixed bug in summary.areg.boot when a predictor is logical vector

22May cut2 for g= or m= completely re-written. Thanks to Vaclav Fidler <> for finding many problems and suggesting solutions in cases of heavy ties in the data.

6Aug Changed all functions that used .Options$name <- value to use oldopt <- options(name=value);on.exit(options(oldopt)) to work with V 5.x, 6.x New version of label<- for 5.x, 6.x to preserve 'matrix' class. NOTE: NEED TO WRITE NEW METHODS FOR labelled SOMEDAY! Bill Dunlap <>: One way of dealing with such a problem is to have class "labelled" have a slot for the data itself (of class "ANY") and a slot for the label. The the subscript method for "labelled" would call subscript on its data slot and pass along the label (perhaps after modifying it). Changed shingle override to use class instead of oldClass at end Removed substring<- from Hmisc for 5.x+ (already there, fast) Changed print.describe first argument from object to x, as Splus 6.0b1 reported a non-existing object x. Changed for 5.x+: sys.parent(3) didn't work Improved how ecdf.formula handles missing groups= values

12Sep Fixed bug in histSpike when n>2000 (called by scat1d, which can be called by plsmo with datadensity=T). Make histSpike respect offsetting the density or histogram from a curve.

15Sep Fixed latex.default -> to work in 6.0 setOldClass for c('latex','file') in model.frame.default for 5+ Added xdvi function in latex, with optional printing using dvips Defined substring2<- even for 5.x and 6., as the substring there does not handle multiple replacements in the same string (in sedit.s). Named it substring2 so as to not mask the builtin function. Modified sedit to use substring2.

5Oct Fixed missing(cgroup) in latex.default to length(cgroup) summary.formula for method='cross': added prn and prnmiss parameters in print. and latex. Modifed latex for twoway to not put extra line of column labels of only one statistic is printed. Added html function to use HeVeA to convert latex object to html. Created show.html to display using Netscape or KDE. Replaced xdvi with new methods: dvi, dvips, added show.dvi,show.latex

9Oct Changed sas.get (both Windows and Unix) to work with SAS v8 with respect to naming convention for format catalogs. For Windows version, added warnings to check that sas.exe is in the system path if anything goes wrong.

22Oct Fixed sas.get to search for 3 possible dataset suffixes: sd2, ssd01, sas7bdat (Thanks to Jorge Sirgo <>) Fixed to allow for date variables (Thanks to Carlos Alzola)

27Oct Added Varcov method for multinom objects (thanks to Dave Atkins <>) so that fit.mult.impute will work with multinom Made several changes in cut2 for g= method=1: some values were not falling in the constructed intervals use to bin the data. Changed Cs for 5.1 and 6.x to use instead of sys.frame

30Oct Added upData function for updating data frames without attaching them in search position one. Includes some error checking. summary.formula and dotchart2 plot methods: pch <- if(under.unix)183 else 16 changed to always use 16 Changed default type= in xYplot to 'p' from 'b' Changed label.s to not use classes for S+ 5 or 6. Removed [.labelled,, print.labelled for 5+.

2Nov For version > 4 defined factor(), as.factor(),[.data.frame to include label attributes

7Nov Changed returned object in transcan to be a list instead of putting things like 'imputed' as attributes of the transformation matrix. Made transformed=F the default. Transformation matrix now fetched using object$transformed. Old transcan objects will work for summary, print, etc. Added actual.imputed argument to transcan, for graphical diagnostics in which distributions of imputed and actual values are compared. Extended to handle irregular lists and to accept a ranges argument (a list).

15Nov Added latex methods for describe, changed describe to always store 100-bin frequency counts for all numeric variables having at least 20 unique values. latex method optionally makes a tiny postscript file with a spike histogram for each such numeric variable, and inserts the histogram inside the tabular output.

17Nov Changed latex.translate to also translate $ to \$. Added to upData: if running under SV4 will strip off "labelled" class from all variables. Otherwise imported dataframes from SV3 have some labelled numeric variables set to labelled factor for some reason.

18Nov first.word wasn't working; re-wrote but does not handle i>1

19Nov For SV4 made spearman2 object a regular matrix inside plot.spearman2 Fixed omitted xout= argument to approx in areg.boot (was not a problem pre-SV4)

23Nov Fixed bug in latest sas.get for UNIX: ommited . before prefix of SAS dataset names (Thanks to Gregory Warnes <>

24Nov Added latexVerbatim function to latex.s

26Nov Added exportDataStripped function in sas.get.s. Strips label and imputed attributes from variables in a data frame so that exportData may be run (and it runs exportData).

2Dec Added automatic created of Key( ) in xYplot even for type='l'

3Dec Improved describe to use SV4 timeDate variables

6Dec Fixed bug in xYplot - could not use methods with both groups= and paneling: added ignoring subscripts in that case. Added nTimeDate function to convert a timeDate vector to numeric and save scales information for trellis.

8Dec Added automatic xlab in xYplot from x-variable 'label' attribute; added automatic scales esp. for timeDate var.

10Dec Improved cut2 to not let values slip through the cracks

19Dec Made setpdf more like setps, used better defaults (color=F, pointsize=10)

20Dec Made type='b' the default for xYplot when method=function or 'quantiles' Improved sas.get to use SV4 timeDate variables Improved handling of xlab and ylab in xYplot, added minor.ticks argument


11Jan Made las=1 the default for setps, setpdf, made mgp c(2,.4,0) instead of c(2,.5,0); changed pch to 1 from 183.

17Jan Changed x to object in body of latex() for !.SV4. (thanks to David Lovell <>)

18Jan Added tex function to ps.slide.s to make it easy to compose LaTeX strings for use in postscript graphics using the LaTeX psfrag package.

22Jan Added rug= option to Points in drawPlot, and opts= for drawPlot

25Jan Improved .First.lib for Windows to not use GUI functions if GUI not running (thanks to Bill Pikounis)

26Jan Added Abline and ymean to drawPlot

7Feb Added seqno to setps and setpdf

23Feb Defined .R. in First.lib.s, to sense running under R, used version$os instead of platform() Modified event.chart to not have newlines in the middle of two long stop( ) expressions.
removed all use of SV4 new methods/class, changed line with ""="" to "=" (don't know why no previous syntax error) Changed how under.unix sensed in First.lib.s Defined is.category for R

1Mar Removed ylim= argument to call to putKey in labcurve

5Mar Added an oldUnclass in areg.boot before xj is passed to quantile, to work for SV4 (class "imputed" was causing trouble) Changed summary. print.imputed arguments from object to x Added lwd.boot argument to plot.areg.boot

10Mar Added missing } in latex.s. Fixed conversion to list from data frame in format.df to work with SV4 (and all others). Fixed fit.mult.impute - was still trying to find n.impute in attributes instead of (new) transcan object Added list.out option to impute.transcan, when var not specified. Causes a list to be returned, including all variables not even needing imputation. Useful for fit.mult.impute. Removed x <- as.matrix(x) in rcspline.eval: won't work in SV4 if x has a class such as 'impute'. Did better job in insuring that returned matrix is storage mode single. Added print.latex and print.dvi in latex.s Added vnames parameter to

18Mar Changed translate to work with R (and use builtin chartr, but not allow multichar=T)

19Mar Added to [.factor to allow drop.unused.levels option in addition to drop.factor.levels Quit overriding model.frame.default for R Adapted for R: Misc.s, model.frame.default.s, sys.s, translate.s,, scat1d.s, label.s, summarize Checked for R: Added to Misc.s: setParNro to run par(list) ignoring read-only par parameters Added to Misc.s: outerText - uses text() to put text in left or right outer margins (assuming par(xpd=NA) set in R) Changed to use outerText Added poor person's strwidth function to S-Plus, changed to use it Changed varclus to use dimnames of model matrix when sensing an intercept (for R) instead of term.labels Added termsDrop function for subsetting terms objects, to facilitate conversion to R (R does not have [.terms) Changed varclus to use termsDrop. 4May01: back to [.terms One negative: termsDrop has to carry data around

21Mar Changed summarize unpaste to use strsplit in R Fixed llist for R (R correctly wouldn't set vname[i] to NULL) Fixed summarize for R

28Mar Changed sas.get, cleanup.import, upData to not use storage model single if under R; made cleanup.import and upData use integer models for integer-valued data unless force.single=FALSE

2Apr Moved var.inner from Design to Hmisc, defined a new var.inner for R (rough draft so far) Changed areg.boot to use var.inner instead of terms.inner Changed areg.boot to assume model.frame.default is the builtin one; changed to compute Terms from formula, not model.frame Added detection of failure of avas/ace in areg.boot Changed ecdf.formula to work with R by using var.inner instead of terms.inner to get variable label; same for transcan

10Apr Changed wtd.table to keep explicitly pass levels attribute to names attribute of frequency vector (R was dropping in x[i]) Changed is.number to is.numeric in psfig Adapted ps.slide, setps, psfig for R. font=string font family name

17Apr Added to store.s: storeTemp. For R, attach()s a temp area .GlobalTemp if not already attached, puts a new object there. For S just issues an assign into frame 0. Object will be available to user (used for creation of Key() after certain high-level graphics)

26Apr Removed setting Des=F to model.frame.default in summary.formula

27Apr Added to summary.formula with method='reverse' parameters test, conTest, catTest. Added calculation and storing of mean and s.d. with method='reverse' (not used in print, latex, plot yet) Thanks to Trevor Thompson for providing initial code that motivated the new code.

need to document mean and SD

1May Added matchCases function in with find.matches. matchCases finds all controls matching cases on a single variable within a tolerance. Controls may match multiple cases. A bootstrap example is given, showing how proper confidence limits for Mantel-Haenszel summary odds ratios may be obtained when there are overlapping sets.

3May Fixed bug in find Intercept column to remove in varclus Added plotMultSim to plot multiple similarity matrices (in varclus.s) Adapted varclus for R (except for Fortran and C code). Uses distance matrix = 1 - similarity matrix, and assumes the default clustering method in hclust in S-Plus (compact) translates to "complete" in R.

9May Fixed summarize to not use unpaste when one 1 by var. present Changed ppanel, pspanel in xYplot to respect type='b' In panel.xYplot evaluated type earlier (lazy evaluation got messed up when method variable changed)

16May Patched up wtd.table (bombed in ecdf) to not use NULL lev

25May Changed missing(fun) to length(fun) so summary.formula can work with R. NEED TO CORRECT FUNCTION PARSE FOR R FOR funlab Changed is.Surv and to primitives to not require survival package in R. Changed format.df because of R format() not having scientific= or decimal.mark or nsmall Changed to not copy substring2<- to substring<- in R (don't thing you can just copy this easily) Changed latex.translate to use substring2<- instead of substring<- In latex.s changed all first.word(expr=substitute(x)) to first.word(deparse(substitute(x))) Also in summary.formula In first.word changed to use first arg if present, and not unlist it In summary.formula, had to change for R in how attr(Terms,'variables') is processed Added title= to generic latex method

3Jun Incorporated Madeline Bauer's <> changes in panel.xYplot that implement color-filled bands

7Jun Added length check before assigning a null label to w in summary.formula for "reverse" Changed tapply(x, g, fun, ...) to tapply(x, g, fun, simplify=TRUE, ...)

18Jun Made several changes to xYplot and labcurve to work with R's grid and lattice packages Updated all platforms on web page, gave to Insightful for inclusion in 6.0 for Windows

24Jul Made changes to interaction per Rich Calaway <> to prevent bomb in 6.0.0

28Jul Used an improvement to var.inner by Thomas Lumley <> to make Design work with formulas such as y ~ rcs(x,k) where k is a variable.

3Aug Fixed latex.summary.formula.reverse to not escape $(N=..)$ Thanks: Eran Bellin <>

10Aug Fixed various bugs in transcan - had forgotten to make its use of model.frame consistent with changes in Design. Also fixed fit.mult.impute

13Aug Added warning to impute.transcan(obj,var) if var was not imputed by transcan, instead of merely returning var

15Aug Changed latex.s to use length instead of is.null - fixed bug with latex(matrix)

22Aug Incorporated Brad Biggerstaff's <> version of binconf. This adds method='asymptotic' and supports vectors for x and/or n, plus the option to return a data frame instead of a matrix. Changed default alpha=.05 from unspecified.

18Sep Changed fit.mult.impute to require a data= argument, fixed bug causing variables not given to transcan to not be found Added data= option to impute.transcan Disabled fit.mult.impute( derived= ) for now until figure out how to make derived variables go into a data frame Fixed bug in where names= was omitted

24Sep Removed necessity for labels in upData to be a list; can be named vector

18Oct Fixed so that variables with < 2 unique non-NA values are not plotted; changed default lmgp and made respect lmgp (apparently for the first time) Moved where match.arg eval in panel.xYplot to avoid warnings of vector in if(is.function...)

24Oct Fixed bug in panel.xYplot when one of the panels had an empty superposed group (thanks: Michael Folkes <>

1Nov01 Added inverseTabulated (in transcan.s) and added new option in transcan to use sampling to get imputed values on the original scale, when inverting nearly flat estimated transformations. This will help with floor and ceiling effects in distributions of imputed values. See inverse option.

16Nov01 Added R's subset.*, especially nice for subsetting data frames Fixed bug in warning in upData - had forgotten paste() inside

20Nov01 Allowed units to be a vector in upData

22Nov01 Added contents, to print the contents of a data frame

26Nov01 Fixed bug in xYplot. method='alt' wasn't calling match.arg

30Nov01 Added base= reps= in reShape to reshape a dataset containing repeated measurements and non-repeated measurements into a data set having more rows to hold the repeated measurements

1Dec01 Fixed histbackback to work for R (thanks to Paul Hewson <> for initial start)

3Dec01 Fixed [.data.frame for S+ to use [,drop=T] so that unused factor levels will be dropped by default Thanks to Bob Byers <>

14Dec01 Added labels= argument to (used by transcan when calling datadensity)

28Dec01 Changed ecdf, plsmo, ps.slide, summary.formula, xYplot, spower to use new formals() for S the same as for R


3Jan02 Took comment out of definition of latex(), which caused a bomb in S+ 2000

8Jan02 Changed exists() to existsFunction() in sas.get for unix, to avoid warning in 6.x

16Jan02 Fixed summarize to allow for matrix as first argument

29Jan02 Improved latex-related functions to use options(latexcmd=) or options(dvipscmd=); changed show.html to use options(help.browser) or options(help.browser) Added strheight for S-Plus

1Feb02 Improved exportDataStripped by also removing the 'format' and 'units' and 'comment' attribute

5Feb02 Fixed impute.transcan's handling of names attribute, also allowing it to use row.names(data)

7Feb02 Moved Design's na.delete to Hmisc, keeping only nafitted.delete

16Feb02 Modified R legend to allow plot=F and grid=T, put in xYplot.s
Not currently using grid=T, but instead draw.key Create objects containing list of ordinary or corresponding grid low-level graphics functions in Misc.s (ordGfun, gridGfun) to modularize many functions, used this in labcurve and xYplot

18Feb Adapted fit.mult.impute to also work with mice( )

22Feb Added as.numeric in transcan where calls scat1d, to handle case where variable being imputed is categorical

24Feb Slight change in rm.boot to not use rep(... each=)

26Feb Changed newcolumn to newcolumntype in latex.s to handle dcolumn=T (thanks Trevor Thompson <>)

11Mar Added gvdvi to latex.s, to display LaTeX objects using Ghostview after converting them to PostScript. Added new argument to dvi.latex: nomargins=TRUE (which changes default behavior). This assumes that the geometry style is installed in LaTeX, and uses geometry to set all 4 margins to 0in for better on-screen display. Also added new arguments widgth and height (in inches), defaulting to a text body of 5.5in wide by 7.5in high.

15Mar Fixed transcan to not use predict.multinom for impcat='multinom'; Used matrix multiplication directly (bug in predict.multinom when predictor is a matrix)

18Mar Removed names of arguments to segments in panel.bpplot, as R and S+ are not consistent in naming arguments for segments and lsegments

19Mar Changed scat1d to use default datadensity='none' rather than sense missing(datadensity), so works with R lattice Fixed panel.ecdf to ignore y; apparently was using some random y for labcurve

20Mar Changed order of args to setup.2d.trellis in ecdf.formula per densityplot in S-Plus 6.0

25Mar Added new rhsImp='random' option to transcan

26Mar Various changes in summary.formula.s - as.category -> factor etc.

31Mar Changed many as.character([-1]) etc. to as.character([-1] etc. to work with R

2Apr Fixed uncbind for R (thanks to Peter Malewski <> Improved formatting of dates in mtitle (thanks P.M.) Enforced id and idb to be factor for model.matrix (req. for R, should not hurt for S-Plus), made main an arg in plot.rm.boot (thanks P.M.) Fixed derivation of under.unix, terms.inner in summary.formula, arrows() in Misc.s for R (thanks Tom Short <>) Changed "=" to "" as column separator in latex.default; pertains when using summary.formula with stratify

3Apr Changed all unix(..., output=F) to sys(...) in sas.get for Unix and R (Thanks Don MacQueen <>

5Apr Changed all multi.line=T to F and added flush=T in all sas.get, per D.M.

9Apr Fixed na.keep to not give class to na.detail.response result if NULL (can't give class to NULL in R)

10Apr Removed zprn.s, moved source for prn to Misc.s Renamed help/prnz help/prn

11Apr Moved format.sep from Design's Function.Design to Hmisc Misc.s, removed from Hmisc rcspline.restate.s Changed rcspline.restate parse call to paste function header

16Apr Added explicit ylab argument to dotchart2 Removed p.sunflowers for R, as R has built-in sunflowerplot Removed calltree for R - can't see how to make getfuns work Added OTHER in first list() in combine.levels to to make R thanks to Peter Malewski <> Fixed eip for R, changed to always use edit() Changed format.sep to pass digits= to format

18Apr Changed fit.mult.impute to not change oldClass(f)

23Apr Added abline to panel.dotplot Added color=(default F) to trellis.device in setps, setpdf Fixed Dotplot for R to work with factor y-variables and panel.Dotplot to work with factor grouping variables (all versions)


29Apr For S-Plus removed use of in dataRep which was put in 28Apr for R

Used for S-Plus 6.1

8May Fixed bug in y-axis label for plot(varclus) or plot(naclus) for S-Plus Fixed combine.levels for R Fixed handling of missing category levels in summary.formula for R 1.5 (has NA in factor levels not 'NA' if exlude=NA when create factor)

9May Added check for equal lengths of x and group in ecdf.default Improved arrow head sizes for R in ordGridFun in Misc.s Fixed event.chart for R (dev.ask->par(ask=T), no mkh=0, marks->pch (S also), defined julian and for R from event.chart R port by Laura Pontiggia <> Found at Need to still look at her comment: ### marked by JJL, disable square plot ### <- ifelse(now.line, now, <- ifelse(now.line,, Defined cdcaids dataset from Jack Lee in-line to help file.

10May Fixed find.matches for R (defined internally)

12May Fixed histbackback with probability=T for R Got gbayes working with R Got minor.tick working with R by changing tck to tcl; for all versions changed 1:100 to 0:100 Got wtd.loess.noiter working with R Improved plot.spearman2 to use R plotmath for rho^2

14May Fixed sas.get to work under Windows for R ( Fixed spower to work with R Fixed areg.boot for R Finished making all examples in Hmisc executable Ran from ~/R as user: R CMD check --no-clean Hmisc Version used for

19May Added reorder.factor to Misc.s for R

20May Removed calltree from help files for R Removed method argument from cut2 Removed browser() from approxExtrap in Misc.s

23May Simplified in how sapply is used (now same for all platforms)

27May Removed putting numeric key values in legend labels in labcurve Added booktabs= in latex.default. Thanks to Patrick Hausmann <> for the suggestion.

29May Made Hmisc-1.0-1 for R

Added rmnames to cleanup.import, default is to remove names or .Names attributes from individual variables For R added to cleanup.import to remove Csingle attributes Fixed bug in cleanup.import for R - was still using single in place of double Added to Misc.s function Names2names to change .Names attribute to names attr. Useful for S objects read by read.S in R.

4Jun Fixed bug in matchCases when which='random' Thanks: Stefano Calza <>

11Jun Removed mulbar.chart from R version (requires S-Plus mulbar())

15Jun Moved calculation of default in labcurve to be used only when actually needed When using pl=T changed to use axis.POSIXct for x variables that are POSIXt or POSIXct

16Jun Changed R help files to use \dontrun instead of if(FALSE)

17Jun Changed diff( ) in labcurve to diffu, diffu = diff(oldUnclass())

18Jun Implemented test=T for summary.formula for method='reverse' Still not implemented: printing and latex()ing test stats

20Jun Fixed dotchart2 for Windows SV4 for positioning of y-axis labels with [ ] present Fixed store() for SV4 to use .Data even for Windows, and to create .Data.temp.../__Meta so can attach as chapter

22Jun Added format.pval from R for S-Plus Fully implemented printing and LaTeXing of test statistics for summary.formula method='reverse' Added prmsd to print or LaTeX mean and SD after 3 quantiles for method='reverse'

1Jul Added gless in Misc.s: prints contents of argument in a gless Window (gless is part of Gnome utilities)

2Jul Added reps= argument to Added new functionality for errbar to allow horizontal error bar charts where group CLs and CLs for differences between groups are shown together.

8Jul Added "_" to list of chars translated (to \\_) in latex.translate

9Jul Made contents save and print the name of the data frame Fixed sensing of missing 'method' in summary.formula for R Added long argument to print.summary.formula.reverse and latex.summary.formula.reverse, to not put first category printed on same line with variable label Added usage of na.rm=F argument to summary.formula(method='reverse') to keep missing categories in table. Thanks to Thomas J Moore for last 2 suggestions. Fixed to always use >=2 for nclass

10Jul Fixed bug in latex.summary.formula.reverse dropping dimnames - conversion from matrix to data.frame ignored row.names= argument. Thanks: Sydney Rice <>

12Jul Fixed bug in latex for long tables (midfule -> midrule) Thanks: Matt Nelson <> Rewrote latex.summary.formula.reverse and print. making it much more modular and easy to maintain

14Jul Added formula to returned object in fit.mult.impute

16Jul Added subset= argument to fit.mult.impute; required subsetting data in fitter as subset= passed to fitter would not work for lrm in R

18Jul Changed dotchart2 to use strwidth for getting width of labels and auxdata in margin calc. Changed call to mtextsrt to use outerText (in Misc.s), and not to use line=. Changed outerText to temporarily put par(xpd=NA) for R.

20Jul Added subset argument to plsmo

21Jul Added subset argument to summarize

25Jul Greatly improved to scale for number of axes, other fixes such as getting around R bug in which cex is ignored in axis(), used strwidth and strheight instead of basic par()s
When R 1.5.0 not being used any more, remove special default for lmgp. Fixed strheight for S+ to ignore # characters in string Fixed strheight,strwidth to not use existsFunction but !.R.

31Jul Fixed formatCons so that latex.summary.formula.reverse works Fixed plot.naclus for last plot for R to allow going outside plot region Changed [.factor so that if drop=T is explicitly given it will be respected ** CHANGED BACK 1may03

3Aug Changed new type argument in errbar to Type, to avoid conflict with plot 'type' - fixed bug with plot.calibrate in Design

4Aug Changed to store in a list the levels of all factor variables; added prlevels=T arg to print.contents Added ... to pass to print method for gless Added pasteFit function (in Misc.s) to paste together as many strings as will fit on one line, making as few character string elements as possible In latex.s changed html to a generic method, changed old html function to html.latex

6Aug Fixed cpower to allow accrual=0 (min=max followup)

12Aug Fixed bug in nn not getting n[i] in latex.summary.formula.reverse. Stopped using row.names in same function, to not be bothered by duplicate factor levels (thanks: Matt Nelson <>) Changed all functions in latex and latex.describe to use file as argument name instead of fi Added html method for

14Aug Improved help files by splitting off several functions' descriptions into their own help files Finished changing all T, F to TRUE, FALSE for R CMD CHECK

19Aug Added lcolor argument to dotchart2 (Thanks: Tom Short <>). This is the color of the dot lines. For R the default is now gray, like the R dotchart function. For S-Plus the default is par('col').

23Aug Changed summarize to convert character stratification variables back to factor (with levels that existed after [subset]). Thanks: Tom Short <>

28Aug Fixed bug in xYplot which was causing ylim to be ignored. Thanks: Andrew Beckerman <> c(list( ), c( )) -> c(list( ), list( )) Fixed - better sapply logic for matrix result

31Aug Improved latex.translate to only superscript the numeric part after ^ if the first character after ^ is -0123456789 Fixed ecdf.formula for R - allowed evaluating groups on data Fixed pspanel in ecdf to skip unused levels Added pdig and eps arguments in print. and latex.summary.formula.reverse - passed as digits and eps arguments to format.pval Fixed cleanup.import and upData when force.single=T to not try to examine dates, times, date/times for integer values Got cleanup.import, upData, describe to recognize POSIX dates/times for R. Made function isChron in Misc.s for determining if a vector is a date/time variable in R or S+ using any of the standard formats Improved wtd.table and wtd.ecdf and ecdf to recognize date/time variables Added ... argument to describe.default, passed to format( ) for numeric variables. Especially useful for date/times, e.g. for POSIXct in R use format='%d%b%y' for e.g. 01Jan1990 to cut out time component. Fixed plot.summary.formula.reverse to ignore Mean and SD in stats when figuring xlim (to only use quantiles) Made plot.summary.formula.reverse manually reset par after calling dotchart2, not tell dotchart2 to reset.par (dotchart2 can't remember original par before add=T anyway) Modified outerText in Misc.s to handle plotmath expression for R Changed summary.formula method='reverse' to include plotmath representation of test statistic name in object Changed plot.summary.formula.reverse to use plotmath for R for this, enhanced dotchart2 to allow plotmath expressions for auxdata

02sep Changed summary.formula for method='reverse' to by default save all the quantiles for continuous variables that are needed in the default bpplot. Modified print. and latex. methods to look for quartiles, not assume they are in certain positions in the vector of quantiles.

03sep Fixed upData to unclass the object and make it have data.frame class at the end for R. Gets around bug in R in which attr(objecti,'class') <- c('myclass',class(objecti)) ignores myclass. For R changed definition of to; was causing the above problem. Changed back to using data.frames in upData. Enhanced ecdf.default to allow lwd to be a vector corresponding to group.

6Sep Modified plot.summary.formula.reverse and to invisibly return the number of pages of plots produced. Fixed bug in latex.default where there was an extra space between \\ and size. Thanks: Patrick Hausmann <>

7Sep Fixed bug in wtd.table when there were unused factor levels Appended zero counts in freq table from table() for summary.formula.reverse if nrow(tab)==1, trying to guess the appropriate complementary category such as absent/present Y/N 0/1 Improved in figuring number of plots needed, to better use space with respect to mfrow

8Sep Improved plot.varclus to use R plotmath expressions for rho^2,r^2

11Sep Changed default ratio in setpdf for R to 4/3

17Sep Changed insert.bottom in latex.default to allow NULL Changed latex.summary.formula.reverse to not number tests used if only one type of test used Added insert.bottom=FALSE to latex.summary.formula.reverse to allow suppression of legend at bottom of table Changed summary.formula for reverse to store units component Added prUnits option to print.summary.formula.reverse, latex.summary.formula.reverse, default=T Added whichLabel argument to labcurve

18Sep Changed labcurve to use axis(1) instead of axis(1,xlim)

19Sep Changed [.labelled to also carry along 'units' attribute Assumes that when you subset a variable and want units retained that the variable is labelled Changed print.labelled to print units next to label if present Added dcolumn option to latex.summary.formula.reverse

22Sep Improved to not issue locator() to wait for new page, if par('mfrow') is preset; same for Modified to invisibly return the number of pages plotted. Fixed small bug in setting of dimnames1 in plot.summary.formula.reverse

26Sep Added plot= and units= arguments to label(). When R is in effect and units=T and plot=T, units appear after the label in small type using R's plotmath facility. Added the labelPlotmath function for constructing labels when label and units are given as arguments rather than attributes. Changed plot.summary.formula.reverse for continuous variables to use this labelPlotmath capability. Also for ecdf.default, ecdf.formula,,, plsmo, xYplot, Dotplot. xYplot, Dotplot, and ecdf.formula do not currently use plotmath as plotmath expressions for xlab and ylab are not implemented in R's lattice. This is handled by the grid argument to label or labelPlotmath. In the future, change labelPlotmath to ignore the grid argument when expressions are allowed in lattice. Wrote plotmathTranslate to do simple translations of character strings to plotmath-compliant components, used by label and labelPlotmath. For now this just surrounds a string with paste(" ") if it contains a space of %.

30Sep Added method='none' for labcurve

1Oct Fixed latex.summary.formula.reverse to not put "N represents ..." in footnote if prn

3Oct Added event.history function contributed by Joel Dubin <>

3Oct Changed default of prn for print. and latex.summary.formula.reverse so that Ns are printed if any of the number of non-NAs differs from the overall number of non-NAs on the treatment variable. Previously, these Ns were surpressed by default if they were all equal.

8Oct Fixed help file for summarize to point out first arg can be matrix

10Oct Added mApply in summary.formula.s documented under summarize (Thanks: Tony Plate <>) - fast matrix tapply Changed summarize to use mApply; many changes required

11Oct Added mtitl argument to to allow overall titles on each page. Thanks: Carlos Alzola <>

23Oct Fixed latex.describe for handling data frames with one variable. Thanks: Kasper Daniel Hansen <>

27Oct Added tempdir() in Misc.s if not exists. R 1.6 has a temporary directory for the whole session, which is now used by tempdir(). This affects latex previewing etc. Fixed those functions accordingly. Changed funlab derivation in summary.formula

31Oct Changed SAS macro language handling of ifs argument in sas.get. Thanks: Harry Southworth <>. Here's a note from Harry:

I think that the problem occurs because when SCAN reaches a quote mark, it thinks it has found the end of the IF statement. Therefore, it works for conditioning on numeric data, but not on character data. Two examples:

junk <- sas.get("s:\\d4522\\candar\\il0024", member="labs", variables=c("visit", "popitt", "n_usldlc"), sasprog="c:\\program files\\sas\\sas.exe", formats=T, ifs='if popitt="Y"') SAS log .....

%sas_get(temp.labs , , ,,, dates=sas, vars=visit popitt n_usldlc, ifs='if popitt="Y"', formats=1, specmiss=0);
Line generated by the invoked macro "SAS_GET".
  1. data osub ; set &dataset ; &ifs ; _

ERROR 390-185: Expecting an relational or arithmetic operator.

On the other hand, the following example works fine:

junk <- sas.get("s:\\d4522\\candar\\il0024", member="labs", variables=c("visit", "popitt", "n_usldlc"), sasprog="c:\\program files\\sas\\sas.exe", formats=T, ifs='if n_usldlc > 150')

Changing the types of quotes in the IFS argument from double to single and vice versa doesn't help.

Using the workaround that I sent in my previous email works, but it is important to use the double and single quotes in the way in which they are used in the example above. Otherwise, sas.get returns errors again.

1Nov Fixed definition of under.unix for Hmisc Thanks: Scot W McNary <>

3Nov Problem in R 1.6 namespaces made [.factor quit working (problem with ... argument in NextMethod). Changed [.factor for R and S-Plus to use one like default R but with changes for drop argument. Thanks:Matt Nelson <> RedHat 8.0 does not come with gless or xless. xless can easily be installed from Wrote xless (like gless) in Misc.s.

4Nov New [.factor would not work in R 1.5. Changed back to old but changed ... to i Wrote asNumericMatrix and matrix2dataFrame functions (in summary.formula.s) to change from a data frame (containing no character vectors or matrices) to a numeric matrix and to change a numeric matrix back into a data frame with variable attributes saved by calling function subsAttr. Useful for mApply. R Version 1.3-0.

24Nov Changed Varcov.glm to use fit$var if present (for glmD)

25Nov Changed prepanel.Dotplot to use as.numeric(y) in range. Corrected Dotplot for R to issue options(drop.unused.levels=FALSE) to keep place of empty cells. Fixed bug in panel.bpplot, wasn't handling factor y Thanks: John Gavin <>

5Dec02 Fixed probable bug in cleanup.import for SV4 - probably was not removing labelled class because inside storage.mode 'double' {} Added download.file function for S-Plus Added getHdata function for S-Plus, R

6Dec Changed all T and F in help files to TRUE and FALSE

7Dec Improved somers2 to return NA for indexes if y has 1 unique value

11Dec Improved xless to use X-windows -title option, tempfile() Fixed labcurve when add=T for R to not call

12Dec Changed putKey to use NA for non-applicable point or line style parameters for R Several fixes in drawPlot

13Dec Added ctable=T option in latex.default. This is now the preferred method, if you have installed the LaTeX ctable style from CTAN

16Dec Added option to getHdata for R to browse descriptions of datasets, if available in

17Dec For Windows, fixed dvi.latex and html.latex to use DOS copy command instead of cat command. Thanks:<> Fixed problem with ctable=T in latex.default

19Dec Corrected problem in ldBands when power= is given, got ldBands to run in S-Plus

22Dec Enhanced show.latex (called by print.latex) so that if file=='' no previewing is attempted, as the file would have already just been cat()'d to STDOUT. If a 'style' is used, it is appended to global temporary variable latexStyles if it is a unique style. Fixed latex.describe so that if file='' no sink is used

23Dec Added Rubin's rate of missingInfo and t-distribution d.f. (dfmi) for scalar parameters to fit.mult.impute.

24Dec Correction in missingInfo and d.f.

27Dec Added README files on web server s/library/splus6 .zip files -> Built new files for S+ 2000, 3.4, unix on web server

Fixed summary.formula print and latex - detect prtest=='none' using any() and all() because prtest may be a vector

31Dec Version 1.4-2 for Linux,Unix,Windows put on web site.


6Jan Fixed cleanup.import to leave matrix variables alone

8Jan Fixed summarize for S+ to use dimnames(r)1 instead of 2 Fixed col.fill=seq(2,8) to be 2:3 in xYplot and Key example

9Jan Fixed bug in getHdata for Windows R: changed to use mode='wb' for download.file to force binary retrieval

12Jan Changed "}{" to "}" in latex.default afte \begin{tabular} WHY was it ever "}{"?

14Jan Changed nomiss to call na.exclude if x is a data frame Fixed pc1 to do require('mva') for R Fixed pstamp by adding stamp for R, but it doesn't work correctly when par(mfrow) is in effect.
Steve Wisdom <>

15Jan Added match='weighted' option to aregImpute; does weighted sampling based on tricube weights instead of just choosing the closest match for predictive mean matching. This is most helpful when an imputation model consists only of categorical predictors, as it will select a greater variety of imputed values.

16Jan Finished work on the match="weighted"; implemented weighted multinomial sampling in Ratfor/Fortran for speed.

19Jan Made match='weighted' the default for aregImpute, added examples where smoothing parameter is varied, in help file

21Jan Fixed bug in formatCats for summary.formula.reverse to handle missing cells Changed latex.summary.formula.reverse to put (N=) as a second row of sub-column headings. Added extracolheadings, extracolsize arguments to latex.default. Added Nsize argument to latex.summary.formula.reverse.

22Jan Fixed plot.summary.formula.reverse to pass ... to dotchart2 Added ... argument to rlegend to allow other args to be ignored (needed by Key from plot.summary.formula.reverse in R) Removed check.names as argument to format.df and in invocation of format.df by latex.default; could not see where this was used.

27Jan Changed default lty for dotchart2 to 1 for R (only) Changed par('mgp','tcl') in setpdf, setps for R Scaled mgp and tcl by mfrow[1] for plot.summary.formula.reverse categorical variables

28Jan Changed bpplt axis( ) to mgp.axis( ) Enhanced mgp.axis to scale mgp and tcl (for R) params by par('mfrow'), and to add the axistitle to the current plot, so that the scaled mgp can be given to title(xlab=...) Changed dotchart2 to use this axistitle instead of specifying it to plot( ) Changed bpplot, bpplt to use mgp.axis with axistitle Implemented units for print.summary.formula.response, latex., plot. Added moveUnits option to upData

29Jan Made plot.summary.formula.response with stratify( ) in effect use superpositioning of the stratified estimates. New option superposeStrata=F to get old behavior of separate plots for strata.

31Jan Fixed bug in dotchart2- draw ref lines by nongrp, not missingness of data Fixed plot.summary.formula.response with superposeStrata in effect, to show total N in right margin, not N for first stratum Added 1/2 character to left of auxdata in dotchart2 by changing outerText. Added extra .1in to left margin for bpplt Improved units processing for latex.summary.formula.[response,reverse] to set "*" to " " for units attributes. Same for print.summary.formula[ , ]. Fixed download.file for S+ 2000, checked getHdata for S+ 2000 Fixed T and F in event.history, changed x==T to x

1Feb Removed 3 comments after argument defs that made S+ say syntax error; compiled wclosest, added to First.lib for S+ 2000. Prepared for final version of libraries for S+ 2000.

7Feb Changed optionsCmds in latex.s under Windows (R and S+) to use as dvi browser 'yap' if options(xdvicmd) not set. yap is MikTeX's dvi viewer. Changed show.dvi for Windows so that if xdvicmd is 'yap' no paper option is passed to yap Fixed dvi.latex,html.latex to use command separator of & for DOS instead of ; Improved sys under R for Windows to use shell(..., wait=TRUE) instead of system( ). This allows dvi.latex to work on Windows for DOS commands such as CD and COPY. wait=TRUE is needed to allow COPY to finish before S can get the results. Fixed bug in setps, psfig by having setps pass color argument to psfig (after adding color=FALSE as argument to psfig)

12Feb Added xrestrict option to labcurve, plotCorrPrecision to Misc.s (but no entry in Overview, INDEX, etc.)

15Feb Add as.character.mChoice to make summarize work with mChoice variables, and made summary.formula with method='cross' invoke as.character.mChoice

3Mar Changed print.labelled to not set class(x) to character(0), for R 1.7 to work

4Mar Added extra \n\n in legend for latex.summary.formula.reverse so that "Tests used" for ctable=T will start on new line.

7-15Mar Many changes to make Hmisc pass R CMD chk, such as making sure all print, plot, summary methods have first argument "x" and have ... at end of args

10Mar Changed unpaste in Misc.s to unPaste so as to not conflict with chron package in R. Affected ldBands, summary.formula, transcan. Thanks: Tom Cook <>

15Mar Added .noGenerics <- TRUE to First.lib.s; causes faster loading of package for R since new methods not used

19Mar Changed *.r keywords to lower case so Insightful can compile for S+ 6 on Windows; Put include "S.h" at top of ranksort.splus6.c for Insightful.

22Mar Fixed mApply - if last dimnames(r) is NULL, sets it to names(FUN(x,...))

23Mar Improved latex.default to use proper column just. for extracollabs
First port to S-Plus 6 for Windows by Insightful since 6.0 appeared

3Apr Fixed bug in wtd.table - should not have referenced lev at all if NULL. Thanks: Leping Zhou <>

7Apr Fixed bug in convertNative(gun()) in labcurve; ) in wrong place. Thanks: Tom Short <>

8Apr Fixed bug in plot.summary.formula on.exit(par=) -> on.exit(par()). Thanks: Scott Boerner <>

11Apr Fixed bug in [.transcan - was not subsetting imputed values for new format transcan objects. Fixed impute.transcan for R (or any setup where variables did not have names()). Required data= for R. Required data= for transcan for R.
Peter Dalgaard BSA <>

19Apr Fixed bugs in latex-related functions for S-Plus 6: append=T not used for file='', added ... to arguments of generic functions, format.df use '' for dimnames2 if NULL Thanks: Tim Hesterberg <>

21Apr Fixed wtd.table to handle missing empty categories which resulted in NA from tapply Fixed bug in mgp.axis - ... not being added to arg list; affected especially plot.Design with factor predictors Thanks: Leping Zhou <>

22Apr Write spss.get for R Improved integer detection in sas.get, cleanup.import. Numbers >= 2^31 kept as floating point

23Apr Fixed significant but in summary.formula for method='response' or 'cross'. E.g. when fun=table but table did not put zeros in frequency counts for unused levels, was padding by replicating. Thanks: Derek Eder <>

27Apr Improved win.slide for S-Plus for Windows to allow background and color arguments, defaulting them to 'blue' and 5 (yellow) when type=2. Calls graphsheet( ) because win.graph did not accept a background.color argument.

28Apr Added get2rowHeads function to Misc.s to e.g. return list(c('a','b'),c('','B')) for get2rowHeads(c('a','b\nB')) Enhanced latex to allow sending extracolheads this way, as column names of input object

1May Changed [.factor so that if options(drop.unused.levels or drop.factor.levels) is F, ignores drop= even is missing Affects computation of lims in summary.Design ** Hope this doesn't mess up R wrt model.frame.default calls Fixed bug in impute.transcan; imval -> impval Thanks: Osman Al-Radi <>

2May Changed impute.transcan to not add class 'imputed' to vectors if under SV4; fixed problem in fit.mult.impute with ols and aregImpute

4May Added times and timevar arguments to reShape when base is given; change sep= to ' ' when paste()'ing row names together

5May For impute.default removed class 'impute' from resulting object Added informative error message to aregImpute when a variable has only one unique value in a bootstrap sample Thanks: Osman Al-Radi <>


16May03 Intercepted NAs in two places in labcurve to handle groups with one point Made labcurve use par(xpd=NA) for R

17May03 Added function reLabelled to label.s; used to add 'labelled' class back to variables in data frame that have a 'label' attribute but no 'labelled' oldClass. Useful for changing cleanup.import()'d S-Plus 6 data frames back to general form so that data.dump(..., oldStyle=T) can create .sdd files for use by R and S-Plus 2000

19May Added sasxport.get function for R, to enhance the import of SAS dataset using the read.xport function in the foreign library, to set up variable and value labels, date, time, and date/time variables.

23May Fixed get2rowHeads to handle R strsplit returning character(0) when input is ""; fixed problem with latex(anova()) in Design

29May Added if(length(dn) && in mApply - summarize( ) was bombing Fixed bug in arrows for S-Plus in bpplt. S-Plus uses size=, R uses length=

4June Fixed latex.describe for S-Plus to not pass file='' to cat( ) Thanks: Mark Grant <>

6June Changed dvips.dvi to use -f | lpr as RedHat doesn't support dvips printing without this Added file= parameter for dvips.dvi

7June Fixed datadensity to handle factor vars that are all NA (Problem in unique(x[!]) in R)

8June Changed describe to store units and format as separate objects in list. Modified print and latex accordingly. Units now in [ ] not ( ). Changed latex.describe.* to use setspace instead of doublespace.sty, uses also now relsize.sty Used smaller font for verbatim output in latex.describe.single. Added tabular argument to latex.*, default to TRUE Fixed upData with moveUnits=T re detection of trailing blank in labels Fixed handling of date-time POSIX variables in R where no times are present

16June Fixed bug in latex.default: when cx is augmented due to rowname being non-empty and extracolheads is given, augments extracolheads with a ''. Thanks: Philippe Glaziou <> and Patrick Hausmann <>

22June Fixed how describe.vector deals time S-Plus timeDate variables Fixed isChron in Misc.s to use class instead of oldClass (now works for S-Plus timeDates)

23June Added latexSN to latex.s for converting scientific notation to LaTeX notation (e.g., 1.2e10 -> 1.2\times10^{10} with spaces)

29June Added improvements to help file for sasxport.get including example of fetching pre-existing test2.xpt file from our web site

2July Added help file for,, approxExtrap, show.pch (and its show.col and character.table), eip, Lag, mgp.axis, mgp.axis.labels, pc1, plotCorrPrecision, t.test.cluster, pstamp, reorder.factor (for R), rlegend (for R), rMultinom, src, symbol.freq Improved axis labeling in symbol.freq Made new help file "Misc" to document miscellenous functions (many in Misc.s). Fixed pc1 so that if hi= is specified the coefficients returned are on the new scale. Renamed latex.translate latexTranslate VERSION USED IN FIRST CRAN RELEASE 2.0-0

15July Fixed print.ldBands in if(x$sided < 3) part, phi=0 -> 1 Thanks: Marc Vandemeulebroecke <> Added colheads argument to latex.default Added detail in help file for latex about need to create your own tempdir function if temp directory is not /tmp or \\windows\\temp. Thanks: Kevin Bartz <>

17July Fixed syntax error in hoeffd.Rd

VERSION USED FOR CRAN 2.0-0, Splus6, Splus2000

1Aug Changed sas.get.macro so that no line > 80 characters long

6Aug Added function hdquantile and Ratfor/Fortran routine jacklins for computing the Harrell-Davis distribution-free quantile estimator with jackknife standard errors

11Aug Added csv.get function, modified cleanup.import to take a datevars argument Added sepUnitsTrans function (in Misc.s) Fixed to use first non-labelled non-factor class, not just ignore variable if is labelled or factor

12Aug Removed [.terms from R version, as it is now in R (was only in survival)

17Aug Changed latex.default to put \begin{center} after \caption, so that there is a space between the caption and table. Thanks: Terry Cox <TAC@NEI.NIH.GOV>

20Aug Added group= parameter to aregImpute to make bootstrap sample have same frequency distribution of group for observations that are not missing on a target variable

27Aug Fixed sys for R to add an argument output and return the result of the system command in a character vector Fixed translate for R to implement multichar=T Thanks for both: <> Fixed isChron to separate classes examined for R and S+; makes 'dates' variable not be recognized as POSIX for R in describe.vector.

2Sep Changed cleanup.import to not use strptime to convert dates if all values are NA Fixed syntax error in documentation for csv.get - escaped %

3Sep Changed sas.get, cleanup.import. upData, spss.get, sasxport.get, spss.get to, if force.single=T, set storage mode to integer if variable is all NAs

6Sep Fixed sasxport.get to remove $ from start of format names for character variable formats Fixed describe.vector for time variables in R Added SASdsLabels function for R, to parse PROC CONTENTS listing file to get SAS dataset labels

8Sep Added center= parameter to latex.default; done by Markus Jäntti <>

13Sep Changed sasxport.get to change _ in SAS dataset names to . in creating list results

14Sep Modified plot.ldBands to allow labels argument (mainly for calendar time labeling)

16Sep Added landscape argument to latex.default Fixed format.df to treat a variable always=NA as numeric, treat date-time variables as non-numeric so don't put in math mode Added size for longtable

23Sep Changed xless to use system instead of sys, for R

24Sep Fixed syntax error in help file for reShape Fixed formatCats for print. latex.summary.formula.reverse to not pad matrix if no left-hand-side stratifier

30Sep Added cex.points arg to bpplt, changed default from 1 to .5 Added corresponding cex.means argument to plot.summary.formula.reverse

3Oct Added caption.loc to latex. Thanks:Robert Keefe <>

4Oct Fixed sas.get to not use less command in case error occurs and SAS log is to be displayed; also fixed to use unlink instead of rm For R (since S+ does not have quote argument to scan()), added quote='' to allow quotes to appear in SAS labels and in data Thanks: Jean Vidal <> Added LRECL= to SAS file reference for reading PROC CONTENTS output to handle default being 256 (wouldn't work with long labels). Thanks: Jean Vidal

8Oct For R 1.8 namespace issues, changed ecdf, labcurve, xYplot, Dotplot to require('grid') when requiring('lattice') Removed existsFunction, getFunction for R, as are now in methods package

10Oct Changed print.char.matrix to not use codes( ) Fixed labcurve for R 1.8 by using getFromNamespace to find width function in grid (if version > 1.7.1 in effect)

17Oct Changed non-standard keywords in help files for R to \concept{}

12Nov Changed labeling for summary.ldBands for meaning of events; should have been total over both treatments, not per treatment. Thanks: marcel wolbers <>

14Nov Sebastien Saint-Jean <> added multicol=FALSE argument to latex.default

21Nov Fixed bug in bystats and bystats2 for R by not trying to enhance labels when fun= specified. Thanks: Thompson, Trevor <>

24Nov Fixed sys( ) call in sas.get for R to use output=F. Thanks: Jean Vidal <> Added dQuote function for S-Plus Surrounded directory and file names in latex.s by dQuote( )
Brian Ripley <>, David Kelly <>

30Nov Major revamp of describe.vector for date/time variables; chron now works. New functions added to Misc.s: testDateTime, formatDateTime. Remove isChron.
Tanya Murphy <>, Gabor Grothendieck <>

1Dec Fixed latex to put \n at end of \end{document} to work with fptex, got rid of use of OS cat and copy commands using readLines. Thanks: Brian Ripley <> Improved latexTranslate to handle British pound symbol Fixed passing of ... in dvips.latex dvigv.latex

5Dec Removed -f and lpr from dvips.dvi in latex.s In dvi.latex and html.latex added .tex suffix in tempfile Thanks: David Kelly <> Changed execution of latex system command to use -interaction=nonstopmode so won't hang with errors; as result always prints some of latex log.

10Dec Fixed check for funlab=='' in summary.formula to use funlab[1] in case fun is an in-line long definition. Thanks: James Rogers <>

18Dec Fixed bug in mApply x -> X for dimnames adjustment

21Dec Fixed bug in FormatTestStats for summary.formula - plt had been assumed to be a scalar


Added more dQuote in latex, one nonstopmode -> scrollmode. Thanks: David Kelly (
Fixed translate for unix to pass command to lapply . Thanks:
New version of latex.function by Daniel Calvelo Aros ( that does not use S.sty
Fixed contents.list to handle empty datasets
Changed Misc.s and labcurve.s to use grid.convert instead of convertNative.
Made parGrid require('grid') if grid is T
Removed package='modreg' from .C('loess_raw') in wtd.loess.noiter, as this module is moving to 'stats' from 'modreg'.
Added getFromNamespace for R to find naresid.exclude in na.delete.s
Fixed local version of ace for aregImpute to allow monotonic response var (ace documentation says this works)
Fixed bug in aregImpute - was sending mono to ace,avas instead of mon
Added plotTrans argument to aregImpute, fixed method for model.frame
Added type='regression' to aregImpute
Fixed rcspline.plot to include ylab argument, call coxph.control, get from namespace if R. Thanks:
Fixed sas.get bug to allow character values to have FORMATs. Thanks: Matt Austin (
Added ddmmmyy function for R. Thanks: Troels Ring (
Fixed syntax error in SAS macro definition (replaced one set of double quotes with single quotes) caused by 23Mar fix.
Removed prn( ) dump from summary.formula
Added method='csv' argument to R sasxport.get function, to read the CSV files created by new SAS macro to import all SAS datasets in a data library in you have access to SAS.
Fixed bug in describe.vector for 5 lowest and highest values for factor variables; was losing formatted levels with c(lo,hi); added format around lo and hi.
Put the project in CVS at
Fixed labcurve to properly detect R version 2 for grid function changes. Thanks: Kurt Hornik (
Fixed sasxport.get to not assume that PROC CONTENTS information has variables ordered any particular way
Fixed plot.varclus to work in R 1.9 patched by not comparing an expression to 'NULL'. Thanks:

-- FrankHarrell - 11 Apr 2004
Topic revision: r13 - 06 May 2004, ColeBeck

This site is powered by FoswikiCopyright © 2013-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Vanderbilt Biostatistics Wiki? Send feedback