Bugs Fixed in S-PLUS 6 Professional Edition for Windows, Release 2 (September 2001)

The bugs fixed in S-PLUS 6 Release 2 fall into the following broad categories:

    Automation

    Data Editing

    Graphics

    Graphics Devices, Exporting, and Printing

    GUI

    Help and Documentation

    Input/Output

    Programming

    Statistics

For completeness, the Fixed Bug list for S-PLUS 6 Release 1 is included below.


Automation

When using the argtypes parameter of call.ole.method to pass a data object by reference (via "VT_BYREF|VT_VARIANT"), the data object and modified results are now correctly returned, as was done in S-PLUS 2000.

The data frame OLE Automation method DataAsArray can now return a 1 by 3 data set.

When using S-PLUS 6.0 as an Automation server, unnecessary copies of data objects are no longer made during the transfer of VARIANTs to S objects (and during the transfer of S objects to VARIANTs). In S-PLUS 6 Release 1, this caused excessive memory growth in some applications.


Data Editing

Inserting a row into a large data set by choosing Insert > Row or clicking on the Insert Row button in the DataSet toolbar no longer consumes large amounts of memory. In S-PLUS 6 Release 1, this action consumed memory that was never released after the operation finished.

Loading a second Excel file containing links no longer generates exceptions that cause S-PLUS to hang or become unstable.

Closing an Excel document that contains links no longer removes the links from the active list.


Graphics

The x axis labels for factor data in a 2D Bar Plot are now the factor levels and not the factor codes.

Line properties now work as they should in Nonlinear Curve Fit plots that are generated programmatically using guiCreate. Previously, no line was drawn if you created a Nonlinear Curve Fit with guiCreate, though the line displayed fine if you created the plot by pointing and clicking.

Area plots are now rendered correctly when the variables include NaNs.

The x axis labels are now more sensible when creating plots from the GUI on time series data.

The burl.tree function no longer causes S-PLUS to GPF.

The guiGetPlotClass function has been updated so that it recognizes the new plot classes such as "Pareto", "PP", and "Horiz Box".

Extracting data more than once from a Graph sheet no longer causes S-PLUS to GPF.

Manually specifying the axis range for a timeDate variable in a GUI plot now displays the correct axis labels. In S-PLUS 6 Release 1, the axis labels were offset by 60 years.

Axis labels are now printed correctly for commands such as  x <- djia[(18840-z):18840]; plot(x), where z < 500.

Creating a 2D Pie Chart of timeDate data now labels the slices correctly. In S-PLUS 6 Release 1, the labels were all offset by 1 day.

It is now possible to specify the number of digits to display when inserting a Curve Fit Equation into a plot. To do this, set the Precision property on the Results page of the Curve Fitting Plot dialog to an integer between 1 and 15.


Graphics Devices, Exporting, and Printing

The cropping on the horizontal axis of a graph is now preserved when the graph is exported to Windows Bitmap or Metafile formats.

Exporting a graph that has points out of bounds no longer displays the out-of-bound points in the created graphics file.

The Export Graph dialog now allows you to export all pages of a multi-page Graph sheet to separate files. To do this, check the All Pages box in the Export Graph dialog.


GUI

When creating a new chapter via File > Chapters > Attach/Create Chapter, S-PLUS now creates the folders __init and __prev. In S-PLUS 6 Release 1, this bug inhibited the use of the undo function and the Edit > Restore Data Objects option.

The toolbar button names and menu item selections for new Excel feature now use initial capital letters. For example, the tool tip S-PLUS to Excel link wizard was changed to S-PLUS to Excel Link Wizard.


Help and Documentation

The help windows for the GUI, command-line functions, and library functions are now completely separate, so that the left pane of the help window always contains the file or function that is displayed.

Asking for help via the Help menu on a function in an S-PLUS library no longer generates a message similar to "invisible(callBrowse("D:/SHOME/library/maps/maps.chm" ,options=4)."

A few tips in the Tip of the Day feature were updated and clarified.

In S-PLUS 6 Release 1, the Help > Available Help menu did not refresh after S-PLUS was closed. For example, if you loaded a library, a corresponding option appeared in the Available Help menu as expected. When you closed and restarted S-PLUS, the library was detached but its help still remained as an option. In S-PLUS 6 Release 2, this is fixed.

In S-PLUS 6 Release 1, all of the help windows were titled S-PLUS Help. In Release 2, this has been changed so that the command-line help window is now titled S-PLUS Language Reference and the help windows for S-PLUS libraries are titled Help for Library <name>.

The display of help files is much more stable in S-PLUS 6 Release 2. Previously, the left pane containing the Contents, Index, and Search tabs would sometimes appear; at other times, it would appear greyed out.

The help system for the Missing Data library has been updated and fixed. In particular, the Index is now alphabetized properly so that you no longer see the error "Cannot locate "mk:@MSITStore:D\splus\library\missing\missing.chm::/missing.hhk".

The Contents tab for the maps library help window no longer contains a link to "Wavelets Module Signnals, Images and Datasets".

S-PLUS no longer hangs when you try to load an expired module and then ask for help on one of the module's functions.

The Help button for the "Cannot open object for editing" alert message now works properly.


Input/Output

The import.data.fame function no longer fails. In S-PLUS 6 Release 2, you can import data from Fame databases without errors.

The import.data.mim function no longer fails. In S-PLUS 6 Release 2, you can import data from MIM databases without errors.

The Export to File dialog now exports data correctly to a Microsoft SQL Server 2000 database. Previously, only an empty table containing the column names was created in the SQL database.


Programming

S-PLUS 6 Release 1 crashed if you issued a function call from the nlme3 library that returned an error message (for example, lme(distance~Subject+Sex, data=Orthodont)). In S-PLUS 6 Release 2, the error handling in nlme functions has been fixed, so that errors no longer cause crashes or inconsistent behavior.

The C++ version of the gaussSeidel example (in \samples\gausssdl under your S-PLUS home directory) now gives the right answer. This bug was caused by some faulty vectorized arithmetic in the CONNECT/C++ routine SPL_Binary.

The apply function now gives the correct results when operating on a matrix with an oldClass.

In S-PLUS 6 Release 1, the command do.call("pnorm", c(list(q=0, mean=0, sd=1))) worked fine, but do.call(paste("p", "norm", sep=""), c(list(q=0, mean=0, sd=1))) returned the error "Problem: Couldn't find a function definition for "'^A^D"". In S-PLUS 6 Release 2, these commands both work as expected.

In S-PLUS 6 Release 1, commands similar try(apply(state.x77, 2, filter)) gave garbled error messages such as "Error during wrapup: Invalid "local" argument to eval()" and failed to return any results. In S-PLUS 6 Release 2, this is fixed.


Statistics

The phenoModel function is no longer missing its .C("nlme3_one_comp_first") symbol and now works without errors.

The quinModel function is no longer missing its .C("nlme3_one_comp_open") symbol and now works without errors.

The summary.miss function in the Missing Data library now works properly.

The type="interval" option to Surv no longer requires time2 to be a vector as long as time. In S-PLUS 6 Release 1, this caused old calls to Surv to fail.
 


Bugs Fixed in S-PLUS 6 Professional Edition for Windows (July 2001)

    Data Editing

    Graphics

    Graphics Devices, Exporting, and Printing

    Graph Tools

    GUI

    Help and Documentation

    Input/Output

    Object Explorer

    Programming

    Statistics


Data Editing

The Data window no longer displays "" (the empty string) for factor variables that contain NAs.

Changing the column width in the Data window via drag-and-drop are now retained after you exit and restart S-PLUS for all columns, including those of type factor, As.Is, and dates.

The Insert > Rows dialog is now identical to the Insert Row dialog that appears when you right-click in the Data window.

Data > Recode now works if the data are in binned form (e.g. a result of Data > Create Categories).

The Create Categories dialog can now use the Cut Point Interval Type option on columns with missing values (NAs).

The Stack Columns dialog now allows you to put spaces between column names in the From Stack Columns, From Replicate Cols, and To Replicate Cols fields (e.g., Replicate Cols: Blue, Green).

In the Data > Restructrure > Unstack dialog, the Group Column field no longer returns the error "Group Column field requires a value" out when the type of Row Grouping is Number of Rows.

When a data column is dragged and dropped, a column of NAs no longer appears where the original column was moved to.

The Data > Restructure > Sort dialog now preserves row names if the target data frame is different than the original data frame.

When right-clicking and accessing the context menu to clear a row in the Data window, the entire row is now cleared.


Graphics

The GUI kernel smoothing plot now plots the full smooth in addition to a scatter plot, instead of simply a short line in the middle of the plot.

The GUI 3D surface plot now displays z axis labels to a sensible precision.

The plot.survfit function no longer attempts to add censor marks when their size is equal to zero. Previously, this would cause strange things to happen in the plot, such as titles being misplaced or not showing up at all.

Trellis plotting functions no longer return an error when assigning the results of substitute(formula) to a variable that is to be used as the formula argument. Affected functions include barchart, bwplot, dotplot, histogram, piechart, and stripplot.

The error message "Error in parse(text = txt): Syntax error: name ("x") used illegally at this point:" no longer appears when opening a GUI plot created with data from a list.

The panel.superpose function now handles different line styles. If type="b", type="o", or type="h", panel.superpose passes the lwd and lty parameters to the points function.

Adding a Color Scale Legend via the Insert menu now gives the same result as adding a Color Scale Legend via the Graph toolbar.

When you check the Use Text as Symbol option and you have varied symbols by color in your plot, the symbols now show up in an inserted legend.

Modifying a GUI 3D scatter plot no longer causes the related data sheet to be displayed.

Adding a right y axis to a GUI plot no longer displays the new axis over top of the old one.

Creating GUI graphs using the Multiple X axes type now gives correct graphs.

GUI histograms now display correctly when the y Axis scaling is set to Natural Log (ln).

The Bar Base option on the Position page of the Bar Plot dialog now produces the correct results when Y Min is greater than 0.

Changing the Label 1 type to None in multipanel GUI graphs with varied axes no longer causes S-PLUS to hang.

Embedding or extracting data from any kind of GUI bar plot no longer causes new bars to be added.

GUI scatter plots that contain negative tick values no longer cause S-PLUS to lock up.

Previously, GUI box plots used filled circles for medians and outliers regardless of whether empty or filled circles were selected. In S-PLUS 6, the symbol type is properly recognized.

In the Options page of the Histogram/Density dialog, the Remove NA's check box now removes missing values before the plot is computed and displayed. In S-PLUS 2000, this option was nonfunctional.

Modified versions of the Nonparametric Survival and Cox Proportional Hazards plotting functions are included in S-PLUS 6 GUI. The new versions of these functions make it easier to distinguish the curves in survival plots.

When data to be plotted crosses the origin and has more than four digits of precision, axis labels formerly showed up in scientific notation. The labels in S-PLUS 6.0 are integers instead.

The command tile.tree(kyph.tree, data=Kyphosis) no longer returns the message: "Error:naxy2:Vector of all missing values. Error in par."

The command plot.survfit(.., fun="cloglog") now handles curves with survival 1 at initial times. Previously, if some time had survival 1, then log(-log(1))=-Inf and S-PLUS returned an error message.

It is now possible to create a Bar with Base at Zero plot using the Multiple Y axis type.

On the Range tab of the X axis and Y axis dialogs, the Minor Tick Placement field now works when specifying a number for Interval and Size for Interval Type, and the minor tick length is greater than zero. Previously, this combination didn't produce anything.

The y axis Axis Breaks now works when the x axis has a range that includes a negative value for both the minimum and maximum.

GUI pie and bar charts no longer send S-PLUS into a CPU loop for long data vectors.


Graphics Devices, Exporting, and Printing

An image plot with irregular block sizes on the screen now prints correctly from either the Graph window or a postscript file.

The command graphsheet(Name = "myplots") no longer produces an error when a graph sheet with the same name is already open. Instead, the existing graph sheet is made active.

The pdf.graph graphics driver has been improved to correct some miscellaneous problems that were previously reported. Aspects that are affected include the default size of points, gray scale features, and the default centering of graphs on a page.

In S-PLUS 2000, when exporting any GUI bar plot in which some of the data has been cropped, the exported graph showed all of the data regardless of the file type chosen. In S-PLUS 6, the cropping information is no longer ignored.

When using trellis.device("pdf.graph", file=...), the outliers in box plots no longer disappear when you view the graph in Acrobat Reader 3.0.

Printing a shaded perspective plot no longer kills S-PLUS.


Graph Tools

The Select Data tool in the Graph Tools toolbar now works on plots that have y axis probability scales.

When there are more than 5 point labels selected for the Data Tips tool, all of the data tips now display properly.

The Select Data tool now hightlights all points encompassed by the drag box in line plots that have symbol frequencies greater than 1.


GUI

The guiOpenFileDialog function no longer returns a file name with ".*.*" appended to the end if a non-standard extension or no extension is used.

When using guiCreate("FunctionInfo"), if you set Display=T and remove the numbers (#0=, #1=, ...) from either the ArgumentList, PromptList, or DefaultValueList, you will no longer GPF.

Selecting Edit > Replace while a Script window is active no longer returns the error message "No Matches Found".

The dialogs can now distinguish between the names of data sets that differ by capitalization only. Previously, dialogs recognized the name in all lowercase letters only.


Help and Documentation

The help files for .Random.seed and set.seed have been updated to include details about the S-PLUS random number generator. In addition, a section devoted to this topic has been added to the "Mathematical Computing" chapter in the Guide to Statistics.

The information in the help file for the split function has been clarified.

The help file for offset has been updated to show how it can be used to fix coefficients in a call to glm. In addition, a section about the offset function has been added to the chapter "Generalizing the Linear Model" in the Guide to Statistics.

A section has been added to the chapter "Generalizing the Linear Model" in the Guide to Statistics that shows how to use make.family to create family objects that are not already built in to the glm code.

The maps library is now described with examples in the User's Guide.

All of the documentation for importing and exporting functions, both from the command line and from the GUI, has been significantly improved. In particular, all of the options are now explained in detail and the ODBC arguments are clarified. 11914

The help file for the Merge dialog has been improved so that it describes the allowed types of merges better.

The documentation in the Programmer's Guide for running BATCH jobs has been improved.

The information in the shared help file for .First, .Last, and .First.local has been clarified. Specifically, .First.local is no longer recommended for making customizations available to all users on network installation of S-PLUS. Instead, the S.init file is recommended.

A section on solving ordinary differential equations has been added to the "Mathematical Computing" chapter in the Guide to Statistics.

The difference between NA and NaN is described in the help file for the is.na function.

Using the synchronize function iteratively in a for loop has been clarified in the Programmer's Guide. Specifically, when synchronize is given a integer argument n, it waits until the end of the top-level expression until it scans the nth directory on the search list for objects that were added or removed by another process.

A new "Probability" chapter has been added to the Guide to Statistics, and includes the density functions for all probability distributions that are part of S-PLUS.

Numerous formatting errors and typos have been fixed, both in the help files and in the written documentation.


Input/Output

Attempting to import a file with an invalid extension (e.g. zip or jpg) no longer freezes the Import From File dialog. A simple error message is returned instead.

S-PLUS for Windows now imports SAS-unix files (*.ssd01) which contain variables that are formatted with the SAS time 5 format.

After importing an *.xls or *.dbf data set that contains NAs, the command table(data$COLUMN, exlude=NULL) returns the true number of NAs in the data set instead of 0.

In the Import From File dialog, specifying a Page Number for multipage Excel worksheets along with a Start Row now fills in the data frame properly, instead of returning only NAs.

In the Import From File dialog, the Page Number option is no longer ignored for multipage Excel worksheets when either Name Row or Start Row is specified.

In the Import From File dialog, you can now import text files that have both row and column names (i.e., files in which the first row has one less field than remaining rows). Previously, this type of import resulted column names being off by one.

The write.table function no longer creates extra spacing when generating an ASCII text file.

In the Save Report File As dialog, the File name has changed from *.rtf to *.txt when Save as type is changed from *.rtf to *.txt.

Including the NameRow field to import.data (or specifying it in the Import From File dialog) no longer causes character data to be truncated to 32 characters.

Extra carriage returns in an ASCII text file no longer cause SPLUS to crash when the file is imported.


Object Explorer

The Object Explorer now includes a straightforward way to delete lots of graphs. Previously you would have to wait through numerous confirmation dialogs, whereas S-PLUS 6 includes a Yes For All option that allows you to delete the selected graphs simultaneously.

Selecting a vector in the Object Explorer with a name that partially matches that of a data frame now places the vector's name in time series dialogs under the Statistics menu. Previously, S-PLUS placed the data frame name.

When the Object Explorer is open, pressing Ctrl-O now properly opens the Open File dialog.

The Object Explorer no longer strips extensions of the form .sXX from object names. In S-PLUS 2000, if you had an named z displayed in the Object Explorer and you added an object named z.sXX,where XX are any 2 characters, z disappeared from view. In S-PLUS 6, this problem is fixed.

It is now possible to change the Font option for the Report window using the Object Explorer. When you right-click on the Report window and select Properties, an option for font now appears.

A function whose name includes the 3-letter character sequence "Set" now appears in the Object Explorer.

Renaming a Graph sheet page through the Object Explorer no longer causes S-PLUS to yank all the graph objects out of the page.


Programming

The debugger function now works properly and consistently.

The dos command now returns errors if there is an error in DOS.

The rowsum function now uses levels(group) as row names for the result. Previously, it did not include row names at all.

The command rowsum(x,group) no longer fails when length(unique(group))==1. In addition, rowsum(x) now acts like rowsum(x,rep(1,nrow(x))) (i.e., it gives the total row sum).

The aggregate.data.frame function now preserves the ordered class of an ordered factor column. Previously, it combined levels that had the same labels and returned a factor column.

The ivp.ab function no longer fails when called from a function using restart, where derivatives is a function defined in a calling function.

The command x[w,,drop=F], where x is a multidimensional array, now returns a matrix when w is a vector of all Fs.

The rbind.data.frame function no longer fails with factor variables when the first data frame has 0 rows.

Memory is now released after each return to the top level when functions are executed from within a Script window or ssc file.

The output from expand.grid(NULL) is now equivalent to the output from as.data.frame(NULL).

The sort function now preserves the attributes of its data vector when the na.last argument is specified.

The match method for factor variables now works properly.

In previous versions, outer returned a matrix even if the generalized outer product was a three-dimensional array. The outer function now returns an array and can therefore print results that have more than two dimensions.

The summary.default function no longer produces warnings when used with recursive objects.

The unique and duplicated functions have been enhanced to accept data frames and multiple keys. For example, unique(x,y) now finds unique pairs of values.

Previously, if you called the names function with a matrix, the matrix was converted without warning to a vector. Now, S-PLUS stops and issues a warning if you attempt to assign names to a two-dimensional matrix object.

S-PLUS no longer GPF's if on.exit(detach(...)) is specified and an error occurs while an object or database is attached.

A GPF no longer results when specifying to .Fortran the lowercase of a symbol that was loaded with dll.load in uppercase.

Sending dates from VB to S-PLUS no longer results in the wrong dates in the target matrix.


Statistics

The tree function now recognizes formula objects that have exclusions made with minus signs: i.e., tree(y ~ .-a-b-c, ...).

When weights are provided to the manova function or the Multivariate Analysis of Variance dialog, errors no longer occur.

Previously, if you called the seq.dates function inside of another function, a variable given to the by argument would not be recognized as numeric. The seq.dates function now passes a numeric value for its by argument.

The gam function no longer fails if any of the specified weights are equal to 0.

The rstab function now contains the correction that was published in volumn 82 (page 704) of the Journal of the American Statistical Association.

The command gam(formula = Kyphosis ~ -1 + s(Age), family=binomial, data=kyphosis) no longer causes the message "Error in 1:n: no data to interpret as numerical value.

S-PLUS no longer returns a negative value for the residual degrees of freedom when a gam model is fit with an extremely small value for the span argument. Instead, the algorithm terminates with an appropriate error message.

Commands like predict.disrim(..., newdata=XXX) now work properly when the discrim object formula uses the period '.' syntax. Previously, this returned the message "Error in predict.discrim: newdata is missing variable(s)".

The version of multicomp in S-PLUS 2000 incorrectly computed comparisons if the adjust argument was specified along with focus and assumed a subset of the possible levels. In S-PLUS 6, multicomp works properly in this case.

Previously, the message: "Error in .Fortran("lowese",: extrapolation not allowed with blending" was returned when predict.gam was supplied with a value for newdata in which some data points were outside the range of the original data used in fit. In S-PLUS 6, this error message has been changed so that it no longer mentions "blending".

Selecting any Residuals option in the Generalized Least Squares dialog no longer returns the error "Arugment list doesn't match."

The Statistics dialogs now work properly when the data set happends to be called data.

The kappa function now performs a QR factorization, which allows it to work on matrices that are not triangular.

The glm function no longer returns an error when used with a robust family object and a formula that includes only an intercept.

New arguments to the predict.lm and predict.glm functions allow them to compute both confidence limits and prediction limits from the results of a regression.

Command-line functions for computing skewness and kurtosis have been added.

An optional rule=3 argument value, which performs linear extrapolation outside the range of observed values, has been added to the approx function.

The bs and ns functions now have optional deriv arguments that return derivatives of the computed basis functions.

The results of survfit and kaplanMeier no longer differ. In S-PLUS 2000, the survival function and the standard errors were identical but the confidence limits were quite different and much narrower for kaplanMeier. The survfit confidence intervals came closer to the true coverage rate than the kaplanMeier intervals did.