In releases since S-PLUS 7.0, we have continued our drive to improve the reliability, accuracy, usability and performance of the S-PLUS language engine and interfaces. =============================================================== BUGS FIXED IN S-PLUS 7.0.6 =============================================================== LICENSING The S-PLUS 7 script named "server" from the command "Splus LICENSE server start" produces an error when there are multiple license files. (40703) =============================================================== BUGS FIXED IN S-PLUS 7.0.5 =============================================================== DATA EDITING The abbreviate( ) function would produce different abbreviations if the input vector was of length 1, than if it was more than one element. (29165) DOCUMENTATION The Connect/Java chapter in the S-PLUS 7 Application Developers Guide was Windows-only and did not include information on running Java on UNIX. This problem has been corrected so that the current version discusses both Windows and UNIX. (31600) GRAPHS menuXyplot() and related graph functions failed if the argument "groups" was specified, and the grouping column had missing values. Now, the panel functions ignore missing values in the grouping column, as appropriate. (Also, the panel functions ignore levels in the group vector that were not represented in the data.) (25255) menuXyplot() and related graph functions failed if conditioning was selected and the data was not in scope. (25258) If you called guiPlot(PlotType = "Histogram Density", AxisType = "Log X", ...), to get meaningful results, you would have to transform the data before generating the desired histogram. (30365) histogram( ) for bdFrame failed if the argument nint was set to "sturges". (40153) bwplot( ) used a different default line color for data.frames and bdFrames. They are the same now. (40158) The qq( ) plot was square for bdFrame by default, while it was rectangular for data.frame. They are now the same shape. (40159) Conditioned GUI plots might not have shown all panels in a graphsheet. Now, all panels are shown. (40359) GUI In the Change Data Type dialog, the Current Type box did not automatically populate when Columns changed. Now, the dialog populates. (29647) In S-PLUS 7, the readline( ) function no longer displayed the "Enter Input" dialog, as it did in S-PLUS 6.2. Rather, the Commands window accepted the input. In this release, you can use the S-PLUS Options>General Settings> General dialog setting "Use Commands window input" (the default), or you can clear this option and use the "Enter Input" dialog, as was the default in S-PLUS 6.2. (31760) Items would be deselected in wide multi-select list box with long strings. (40064) Attempting to create a subset expression from the subset dialog resulted in the message "Unable to execute a command while script is running." (40472) HELP The Help file example for createChapter would return and error: Problem: Object "." not found Use traceback( ) to see the call stack. (31714) In the Help file for grid.render, the hyperlink under 'See Also' contained a typo (axes.render). It has been corrected to read axis.render. (31729) The plot.timeSeries Help topic describes how reference grid lines could be toggled on or off using argument reference.grid. This topic now includes a description about how reference grid elements can be altered via the trellis parameters major.grid and minor.grid. (31730) The help file for seq( ) mentioned big data (bdVector), but did not show the bigdata argument for seq.default. (31731) IMPORT/EXPORT DATA If you called importData with the arguments startRow=1 and endRow=1, S-PLUS would return the complete table instead of just the first row. This problem has been corrected, and now only the first row is returned. (31724) Exporting a bdFrame to a file with a "sas7bdat" extension did not work unless the type argument specified the "SAS" format. It will now use the SAS format based on the file extension. (31743) In S-PLUS 7, if you tried to query and access an .mdb database file, the function executeSQL raised a warning message. (Running the same query against the same file in S-PLUS 6.2 produced no warning message). (31770) When you imported from a database, if you clicked 'Add Sources' (odbc) the S-PLUS message "Problem: Failed to evaluate call" would appear. (40279) When S-PLUS read an Excel version 5+ file on Solaris, S-PLUS would crash. (UNIX only) (25655) IMPORT/EXPORT DATA (STATRN32.DLL) If you tried to run importData( ) on a FASCII file (that is, a file ending in .fix, .fsc, etc) without specifying the file type and without specifying a format string (for example, no 'format' parameter), the the import would fail. Now, if you import a FASCII file and specify no format string, then S-PLUS changes the import type to ASCII. (18877) INSIGHTFUL MINER Insightful Miner now allows license fulfillment as part of an automated installation. (40191) INSTALLATION In S-PLUS 7, if you installed S-PLUS while running Eclipse (the non-S-PLUS workbench), the installer required that you shut down Eclipse. (31769) Library:XML The xmlDOMApply function in the XML library did not work correctly due to an error in the C code. (31073) LICENSING S-PLUS now supports license fulfillment using the License Fulfillment Wizard via proxy server (behind a firewall). (40101) S-PLUS BIG DATA Clicking the Commands window, and trying to run a command there, while running a Big Data script in the Script window resulted in S-PLUS hanging. (31695) The function bd.internal.replace.columns( ) did not allow a column to be filled with an NA. (Note that you should never call internal functions directly.) (31700) The S-PLUS big data function plot.bdGlm( ) did not create a qqnorm plot of residuals, but the S-PLUS function plot.glm did. (40042) The S-PLUS big data function bd.join would give an incorrect value when key.columns were not the first columns in the input bdFrames. The problem has been corrected. (40062) Applying bd.relational.join or bd.join to big bdFrames used excessive memory. The memory use has been reduced. (40066) The function bdGlm(y~factor) used memory proportional to cube of number of levels in factor. (40077) The function duplicated would handle bigdata and non-bigdata inputs differently. (40300) The function bd.join was 10 times slower after calling importData. (40443) S-PLUS BIG DATA AND INSIGHTFUL MINER If you called bd.block.apply (tmp,num.outputs=1, FUN=function(IM) {print(IM)}), it would run an infinite loop. (31701) S-PLUS For the bd.block.apply input list elements in1.column.min, in1.column.max, in1.column.mean, and in1.column.stdev, the vector values would be NA for non-continuous columns. This has been changed so that these values are now reported for all types of columns. The interpretation of these numbers depends on the type of column. For more information, see the Help topic for bd.block.apply. (29774) The argument natural=T in the bd.join function caused the following error: Problem in bd.internal.exec.node (engine.class = "co..: JoinEngineNode (0): 5. (31650) The function bd.join did not respect the default value of all.rows=F, but would work if you explicitly specified all.rows=F in the command line. (31651) The functions panel.loess and panel.lmline were inconsistent when used with panel.splom. That is, with panel.lmline, lines were drawn across the entire matrix of panels, while it should have behaved like panel.loess, displaying only one line per panel. (31675) The S-PLUS function trace(plot,browser) caused problems with F2 key and command echoing, depending on output buffering state. Additionally, regardless of the output buffering state, typing at the browser prompt (in the commands window) did not behave correctly. These problems have been corrected. (40054) The function lm.wfit needed the argument drop=F to prevent an error in some cases when singular.ok=T. (40067) S-PLUS now includes the functions panel.hexbin.smooth.spline and prepanel.hexbin.smooth.spline. (40133) The S4 default method for sqrt is now S3 generic. (40146) Calling either lmsreg.formula or lmsreg.formula would fail if the data argument was missing. (40412) The function multicomp.lm( ) called the function arg.names( ), which is in library(menu); however, that library is not attached by default on Unix/Linux, so the function call would fail if that part of the code is invoked. This problem has been corrected: multicomp.lm( ) no longer uses arg.names( ). (UNIX only) (31748) SPXML When using the the SPXML function createXMLFile to create a matrix, you would get unexpected results. (For example, only the header would be created, rather than the entire matrix.) (40068) ====================================================================== Areas in which we have made improvements in 7.0.3 release include: BIGDATA LIBRARY The "link" and "var" for the quasi() family are not used properly in bdGlm(). The fitted model, and/or the deviance, does not match the results from glm(). bdGlm fails when creating an S-PLUS list from XML with intercept- only model. glm(plants~1, data=as.bdFrame(guayule)) Incorrect results with "cloglog" link and either the binomial or quasi family. The contrasts argument is ignored when creating the model matrix, so the default contrasts are always used. Using the bdGlm function with a binomial family and the weights argument returns incorrect null.deviance output. Using the bdGlm function with any family, and with no intercept fit, returns incorrect null.deviance output. S-PLUS glm and bdGlm give different answers when family = poisson and link = identity. ====================================================================== Areas in which we have made improvements in 7.0.2 release include: VERSIONING Updated the version object and VERSION file to 7.0.2. This problem has been corrected. Version information on DLLs and EXEs in %SHOME%/cmd was out of date. E.g. Sqpe.dll has File version 6.0.0.1 and Copyright 1999 MathSoft, Inc. This problem has been corrected. BIGDATA LIBRARY Arithmetic operations with bdFactors now produce NAs, as with small data factors. In the ImportFromFile feature, when the user imported an ascii file as big data using the user defined delimiter "Tabs (\t) and or spaces ( )”, only the tab was interpreted as a delimiter. If the file was imported as standard data, then both tabs and spaces are delimiters. This problem has been corrected. When called with a bigdata object, the tapply INDICES argument worked only it was a bdFactor. It now works the same as it does with a small data object, using a numeric or character vector. (tapply help file says INDICES arguments are interpreted as categories.) Using tapply with the bigdata library would fail if INDICES was a list, and table of the INDICES components contained empty cells. This problem has been corrected; empty cells are now accepted. Calling grep("[a-zA-Z]", P8.bd[,"ZCTA5"]) would return indices to elements that had no alphabet characters in them, because calling grep on a bigdata object started the indices over at 1 in each block. This problem has been corrected. as.bdNumeric("999XX") returns 999. It now works in the same manner as as.numeric("999XX"), which returns NA. When you use a bdFrame with a bdFactor column for group, the percent plots did not work in the histogram function. The bars and axes labels were not scaled correctly. This problem has been corrected. The bigdata version of prepanel.qqmathline() failed with a problem in panel. this problem has been corrected. histogram(data=bdFrame,~bdFactor) failed, as did histogram(data=bdFrame,~bdCharacter). This problem has been corrected. Using tapply with bigdata produced an error when there were unused levels in the INDICES argument. It would silently return incorrect results. The function now returns a meaningful error. anova.bdLm ignored the "test" argument for the 1-model case, always returning the result for test="F". This problem has been corrected. libaml.so could not find the symbol hc_iminer_. (Note that hc_iminer__ is defined) This problem has been corrected. (Linux only) delling functions fail with error: Problem in parseXMLPathFile (immlFileName, c("IMML/G..: Attempt to invoke internal code " S_parseXMLPathFile" not in load table S4 default for hist should call UseMethod. This problem has been corrected. Error displayed when attempting to load bigdata is cryptic and doesn't state the problem. Error: "Problem in attach.default( where, purpose = \"data..: Can't interpret \"where\", of class \integer\", as a database". (Student and Professional editions only.) ECLIPSE/WORKBENCH Previously, when you selected Source > Format, an extra blank line would be added in each braced { } expression. Additional line added each time Format is selected. This has been corrected. Syntax highlighting used the keyword color for the "in" in min(x), or the "if" in "tarif()". Because it was not treating “.” as an alphanumeric character, syntax coloring would display different colors for different parts of functions (for example, as.numeric would appear with as and numeric in different colors). Now, the syntax highlighting tags a keyword only if it is a complete word, and it treats a period as an alphanumeric character. Windows only, perhaps already in 7.0 The S-PLUS Help menu was unavailable when the Console View had focus; it worked when the Editor had focus. This problem has been corrected. Submitting code to run (with the run button) before the engine is ready (for example, when the bigdata library was loading) failed with no message. It now displays a meaningful message. Highlighting a function name in the Output or Console Views, and then pressing F1 opened a window to the eclipse Help system, instead of the S-PLUS Language Reference. This works correctly in Editor view. This problem has been corrected. In the Console View, the user had to click at or below the current input line to be able to type in the Console View window. Clicking above the current input line resulted in typing being ignored. In the Console View, Following this sequence caused the GUI to freeze: launching a java.graph by typing java.graph, typing image (voice.five), opening the file > printsetup dialog box, selecting landscape, and then pressing ok. This problem has been corrected. (Windows only) When you launch java.graph, in the options-graph options dialog box, the Help button did nothing. The Help button was removed from this dialog box. (Windows only.) If Eclipse was running, and S-PLUS was uninstalled and then reinstalled, then the Windows Installer could not remove the S-PLUS jar files (and others) in use by Eclipse. Files were marked for deletion on next reboot. If you reinstalled S-PLUS prior to reboot, on next reboot, the files would be deleted, requiring repair/reinstall. This problem has been corrected. (Windows only) Errant Elan library files caused a conflict with S-PLUS. On startup, the user would see the error "Splus License Error / could not start the S-PLUS Workbench: / Can't load library: d:/.../cmd/ TS_ELANL.DLL. / Workbench will shut down." When the user clicked OK, Eclipse shut down. This problem has been corrected. In the Editor, highlighting the word "return" and pressing F1 should display the S-PLUS Language Reference for that topic, but currently it displays a menu for the Eclipse help. (This same problem existed for the word "function," but not for other functions (e.g. lm). This problem has been corrected. When the user called java.graph()within eclipse, Solaris returned a dialog box saying that it does not work, but then also caused an exception to be displayed in the xterm, where eclipse was started. Now the exception is supressed. (Solaris only) A stack overflow error not caught by try() would hang the Splus command line. This problem has been corrected. HELP/DOCUMENTATION There is now a Help file for SBATCH, with link to BATCH help file. S-PLUS 7 for Windows contained the winspj version of the java.graph help file in the main splus.chm. This masked the more detailed java.graph help file in the winjava library. To correct this problem, the winspj version of the java.graph help file has been removed. The hmisc library contained its own help() function, which did not work properly with the S-PLUS help files. This problem has been corrected. The lapply, tapply and sapply functions work on bigdata objects (in some cases), but their help files do not mention bigdata support. This problem has been corrected. The Help file for postscript is out of date. This problem has been corrected. There was a small error in the description of the format argument in the importData help file. In the example format string the last field was denoted with %6f, which means a 6 character numeric column, but the help says these 6 characters are imported as a character string column. This problem has been corrected. The topic for cluster analysis ("Clustering") needed a link to minimal spanning tree function "mstree". This problem has been corrected. The sas.get help file needs to indicate that the function is deprecated. sas.get is listed in the 'Deprecated' help file. This problem has been corrected. Page 354 in Programmer’s Guide (pg.pdf) contained a line: cat("\n\+*** Gaussian Fit ***\n\n") This line runs in a script window, but in the commands window it gives the warning: The initial backslash is ignored in \+ -- not a recognized escape sequence. Use \\ to make a backslash.” This problem has been corrected. The smooth.spline help file ended in "When the data consists of Input string too long, limit 500". It appeared to be missing text, as well. This problem has been corrected. Installation and Administration Guide (Admin.pdf p.49) indicated that IFUL_LICENSE_FILE =@server can set the S-PLUS shortcut target path for SU license types. Setting this variable from the shortcut does not work. Rather, it is set in Windows System Environment. The GUI Help file for 'Date and Time Input' and 'Time format' contained a typo: it spelled interpret incorrectly. This problem has been corrected. LIBRARY/XML xmlTree, xmlOutputDOM, xmlOutputBuffer, xmlHandler, and xmlEventHandler used R closures. They now use S frames or lists. This also impacted the use of xmlEventParse and some potential use of xmlTreeParse. (Windows only) in xmlDOMApply, the C code for RecursiveApply has been corrected. (Windows only.) XML/dtd.t tests wwre failing due to a problem with an older version of libxml2. This problem has been corrected.(Windows only) xmlAttributeType(dtdElement("variable", dtd)$attributes$type) returned "". It should be "CDATA". (Windows only.) This problem has been corrected. LICENSING If no license was available, Splus would fail with a SIGSEGV error after printing the no-license error message. The SIGSEGV error no longer appears; S-PLUS fails gracefully when no license is available. We were still distributing libraries for the Elan license manager in SHOME/cmd on Windows: TS_ELANL.DLL and nS_ELANL.dll. This problem has been corrected. S-PLUS cumprod returned incorrect results with a logical vector. This problem has been corrected. Previously, the dump path followed the path of the last GUI file export, if the user browsed to the last export path. If the user manually provided the GUI export path, the dump path did not change. This problem has been corrected. The BATCH Win32 utility loaded the bigdata library by default. It no longer loads by default. SBATCH on Windows interpreted the -work parameter incorrectly, writing the .Data directory in the wrong place. This problem has been corrected. The Help file for bd.sql was missing. It has been added. The gsub function would drop vector elements when its input contained empty strings. This problem has been corrected. The coxme function could fit the wrong model, due to an error in the coxme.varcheck function. This problem has been corrected. try()/restart() caused a warning list to be printed for each caught error. This problem has been corrected. The -headless option did not work with SBATCH, which meant that runnning batch commands using SBATCH on Unix did not produce graphics unless an X-server was running. This problem has been corrected. SBATCH on Unix would not run if the output file did not exist, displaying the error ‘Cannot write into "filename".’ This problem has been corrected. The lag argument in the diff function handled only explicit numeric values. The argument can now handle numeric objects. In the ResultSetExample within the LocalResultSet class, change the casts to specific subtypes such as (Float) to instead be casts to (Number). See bug 31274 for comments regarding this. On Fedora Core 3, when the user created a plot using postscript(), the error "do_ypcall: clnt_call: RPC: Unable to send; errno = Invalid argument". This problem has been corrected. Splus.bat script on Windows set S_HOME environment variable with trailing backslash. This caused extra backslashes to appear in paths and other unexpected problems. This problem has been corrected. (Windows only) In automate_sample.ini on the 7.0 CD, S_HOME and S_PROJ pointed to the splus62 directory as the default. This problem has been corrected. Removed Ultragolds from VERSIONS files. S-PLUS should list only one per license type, so it was no longer necessary to have an Ultragold specified within the distribution. CorrelationExample failed with error: com.insightful.splus.SplusBadDataException: Query produced no data. This problem has been corrected. (Unix only) The fleming object was not found when the first line of the Examples was run for the coxph.detail helpfile. On the second line, coxph.details(fit) should change to coxph.detail(fit). This problem has been corrected. Compiling SCONNECT and SPL using Visual Studio .Net should create the output .dll at the root drive of S_HOME, according to C:Program Files\Insightful\splus70\samples\readme.txt. This was not always true. This problem has been corrected. Native database import/export was disabled in the Professional Edition. This problem has been corrected. SplusUserApp.getGraph() returned null if the user was not using a remote connection. This problem caused the examples GraphButtonsExample, ImageCalculatorExample to fail with a NullPointerException. This problem has been corrected. In ResultSetUtilities, return FLOAT and REAL as S-PLUS "single", and BOOLEAN as S-PLUS "logical". The FLOAT and REAL values were returned as "single" in S-PLUS 6.2, so this restores backwards compatibility. The BOOLEAN sql type is new in JDK 1.4, but it should be a logical. This problem has been corrected. In Eclipse or in the Windows GUI, after a stack overflow error, future errors would not display an error message. This problem has been corrected. When using importData to read an Excel file with *no* data, S-PLUS returned an error but did not drop the connection to the file. If the user then tried to open the file in Excel, Excel would hang. This problem has been corrected. Splus -g: Splus.Java.FIFOs were made in /tmp, not S_TMPDIR. This was security problem and could prevent the user from starting Splus -g if another user left one of those around. This problem has been corrected. plot(corn.rain, corn.yield) no longer produced a scatter plot of corn.yield vs corn.rain, as it did in 6.2. Now it produces a plot of corn.rain vs. time on Unix/Linux, and two plots (corn.rain vs. corn.yield and corn.yield vs. time) on Windows. This problem has been corrected. CONNECT-JAVA A memory leak occurred when a Java dialog ran an S-PLUS expression within the MFC GUI. MAPS The world map database (installed with S-PLUS for Windows by default) did not include Hawaii as part of the USA. library(maps); map("world", regions="USA") draws USA and its territories, but you needed to do: map("world", regions="Hawaii", add=T) to get Hawaii on the map. This problem has been corrected. WINDOWS The user could do a custom install of S-PLUS and request that library/main not be installed. The installation will finish, but when the user tried to start up S-PLUS the splash screen would pop up for a second and then would disappear, no S-PLUS starts. This problem has been corrected. ====================================================================== Areas in which we have made improvements in 7.0 release include: I. FIXED BUGS II. ENHANCEMENTS. ------------------------------------------------- I. FIXED BUGS Accuracy random.c:invibeta() would fail to converge without warning to the user. Affected qt(), qf(), and qbeta() functions. glm(..family="binomial") with prior weights returned different results from previous versions. Problem was with supplying a start vector rep(0,n) which is an integer and not a double. glm, family=binomial used poor starting values when the reponse was a vector of proportions of successes, compared to a matrix with columns of successes and failures. t.test() - Option added to allow specifying use of a "pooled variance" in a two-sample t-test, so that a standard error could be returned even if one of the samples (groups) had only one observation. Incorrect standard errors and variances from glm(..., family=binomial) when response=cbind(successes, failures) or when response=proportion of successes, weights=number of trials. Also reported: Starting values were not good if response=proportions (success/total) ks.gof() suffered an integer overflow if x and y were vectors of length greater than about 46000. Graphics The description for strip in trellis.args help file says it can be FALSE, TRUE, or a function that draws strip labels. Specifying strip=TRUE resulted in an error. java.identify specified wrong regions if par() changed just before call. plot.lm did not forward the ... arguments to plotfun4, plotfun5, or plotfun6. Problems occur with trellisPlot.timeSeries() if you pass a lot of timeSeries objects. If plotting multiple timeSeries with plot.timeSeries, and one of the timeSeries contains NAs for its starting data values, this timeSeries would not be plotted. In plot.timeSeries with plot.type="hloc", the column names in your timeSeries must be "open", "high", "low", "close" (case sensitive) or you would get an error that undefined columns were selected. In plot.stl, in some instances of plotting stl objects, returned the error "Problem in xyCall(x, , function(x, y, xlab, ylab, ..: argument "y" is missing with no default" )) plot.cox.zph occassionally generated the error "Error: Missing values not allowed Error in axis." This error was due to the approximation of the x-axis labels. Function definition calls approx. This sometimes generated NAs, as mentioned in the help files. plotTimeDate() did not work properly with ylim argument. For example, plot(timeCalendar(m=1,d=1:10,y=2004), rnorm(10,10,1), type='l',ylim=c(0,20)) "Error: Logarithmic axis must have positive limitsError in plot" when plotting timeDate object with y as log axis even though log(y) had positive limits. For example: plot(timeDate(c("1/1/90", "2/1/90")), c(1, 100), log = "y") When plotting a timeDate object, if you specified the y axis to be the log axis, no y axis labels were printed. x <- "mypsobj.ps"; trellis.device("postscript", file=x) failed if within a function call. S-PLUS becomes unresponsive when you trying to plot big numbers. When you plotted a timeDate object, the labels could be incorrect. It worked if you called plotTimeDate directly. plot.timeSeries(.., xlab=..) had no effect, and plot.timeSeries(.., x.axis.args=list(xlab=..)) caused a fatal error in axis.time(). Bug in trellisPlot.timeSeries if some of the time series names contained periods. Resuled in warnings and an error: "Problem in panel.superpose.ts: No data to interpret as logical value: if(type[i] == "l") sl[i] else ss[i]". x-axis incorrect with trellisPlot.timeSeries() for some x variables that are of class timeDate. x<-seq(0,100,length=100); plot(x,exp(x)) A graphsheet opened but a plot never appeared; S-PLUS would become unresponsive. Try: plot(1:10, c(1:9, 1.0e60)) A graphsheet opened, but the plot never appeared and S-PLUS would not respond. plot.loess(): plot the model eth.fit<-loess(NOx~C*E, span=1/2, degree=2, data=ethanol), ie, plot(eth.fit). Resulted in 2 old-style trellis plots, 3 pages, with the middle page blank. (Also returned 4 "Line out of bounds" warnings.) (WINDOWS) The java.identify function in winspj and winjava displayed different behavior when empty values were passed to it. With winspj, an error occurred: Problem in .C("S_winspj_java_identify",: subroutine S_winspj_java_identify: Missing values in arg.3. (WINDOWS) The aspect ratio of 'java.graph()' did not change according to the specified values of 'height' and 'width. (WINDOWS) specifying tick.levels to anything that did not include "medium" in the x.axis.args to plot.timeSeries resulted in the error "Problem in label." (WINDOWS) Graphlets Graphlet print button would fail silently when browser security has applet printing disabled. GUI When you used Cntrl-C and Cntrl-V to copy/paste data in the data editor, the cursor displayed the hourglass and never reverted to a pointer until you moved the mouse. If the number of major ticks calculated was greater than the number of points (integers) being plotted, then the axis labels would repeat. This caused labels look like 1,1,2,2,3,3,4, for example. This behavior occurred only for 4 or fewer points, gui graphs, and integer data. (WINDOWS) Multipanel: Customization Skip Column and Panel Order Col. fields displayed problems. To skip panel 2 in GS1.sgr, you must specify Panel Order Col.: =c(1,3), not Skip Column: =c(0,1,0,0,0,0) as you would expect, based on description in Help. (WINDOWS) S-PLUS Report files that contain embedded graphs could not be saved to disk. A Windows dialog appeared with the error message: 'Access denied'. This bug is a Windows OLE Automation limitation with embedding OLE objects in documents. Now S=PLUS displays an error when you copy a graph to RW. (WINDOWS) Vary XY Panel Histogram bars. The X axis did not compute correctly for some panels. (WINDOWS) Narrow ranges for Tick Ranges on 2D plots caused apparent tick duplication because precision was not adjusted automatically. (WINDOWS) GUI Histograms created with "Vary X panel" had a poorly-chosen number of bins. (WINDOWS) Graph | Embed Data: embedding the data in a GUI Trellis scatter plot removed the values from the Panel Strips labels. (WINDOWS) Copying embedded graphics / metafiles from within a graphsheet using context-sensitive menu 'Copy' command copied a blank object. (WINDOWS) If you changed the width and height of a GUI graph so it is wide, then annotation lines, annotation reference lines, and grids were cut off after a certain point along the x-axis. (WINDOWS) Continuous grouped quality control charts produced incorrect labels for the x-axis. (WINDOWS) GUI 3D or 2D Scatter Plot with symbols varied by color if you inserted a legend. The text part of the legend would disappear if you select Graph > Embed Data. (WINDOWS) If you added points or text to a plot after it's been saved to an SGR file and then tried to overwrite the SGR file with the new data, the S-PLUS graphsheet would update but not the SGR file. Error 'Failed to save document' is returned instead. (WINDOWS) Inconsistencies and problems appeared with conditioned GUI graph of overlayed area charts. Problems included: (1) Redrawing graph created a different graph; (2) the error: "Problem: Invalid frame number (0) in set_frame"; and (3) Vertical line at x=0; should also be one at x=1. (WINDOWS) Software could be unresponsive when creating a trellis plot using the GUI with a dataset that did not have column names. (WINDOWS) An extra row was added into a dataframe when the data was manually entered. The new row would be named 1.1; the old name moved down a row, with NAs in columns. The new row had the current data entered. When you type the command 'synchronize(1)', the working directory (position 1) of the Object Exploreer's search path was removed and the Data folder displayed the objects in the next directory of the search path, "splus" (position 2). (WINDOWS) In the GUI, the menu selection data->restructure->append the row name did not copy from the "from" data frame to the "to" data frame. (WINDOWS) In the Data > Copy > Column dialog box, specifying in the "To Columns" box failed with the error: Problem in valid.rowcol(target.col.spec, max..: Out-of-range row/column specified. (WINDOWS) In the Export to Database dialog box, the "Preview column names" and "Preview row names" check boxes did not show the columns or rows in the "Select columns" or "Select Rows" list boxes when checked. (WINDOWS) If you called Sys.setlocale() and specify a locale other than the "C" locale, when you issued a guiCreate() command for a GraphSheet, you would get errors about property value numbers not being valid doubles. (WINDOWS) If you had not called Sys.setlocale(locale=""), the grid still used the current OS locale settings to format numbers typed in the grid, although input used standard "C" locale. Both now reflect current setting of locale in S-PLUS. (WINDOWS) Even though you called Sys.setlocale(locale="") in a Commands window, the GUI grid editor did not use the current locale settings to format input data (i.e. if radix=',' then entering 1,2 resulted in NA where it should have resulted in 1.2 and formatted as 1,2 in the cell). (WINDOWS) S-PLUS ANOVA dialog box would return an error if residual vs. fit plot was selected. The problem occurred in assign(save.name, object, where = 1): The name "FALSE" is reserved -- assignments to it are not allowed. (WINDOWS) Import Data from the Database GUI dialog box would cause S-PLUS to become unstable if SQL Query string was fewer than about 4100 characters. (WINDOWS) Sudden GUI failures could occur due to corrupted files in the _Prefs (_prefs) folder. Deleting the _Prefs folder and restarting S-PLUS restores the default GUI. (WINDOWS) Attempting to to edit a 'read-only' file in a script window, and then clicking the Close button for the window resulted in the error message: "Cannot write file. Possibly out of disk space or invalid path". (WINDOWS) GUI Import Data from Database did not overwrite dataframe, but added columns to the end when overwrite was selected. Removed Access (*.mdb) from the list of file types in File > Import Data > From File. (It did not work, because you could not specify the table name.) Rather, import from Access using Import from Database. (WINDOWS) The overwrite target option did not appear to overwrite any data in the data frame when importing from a database. This was a problem on both direct drivers and ODBC. The imported columns were inserted rather than overwriting the data frame target column. (WINDOWS) When you import a1c_1_1_01.csv you would see the error "Problem: internal error: trying to set internal exit action in frame 1, but the dataset does get imported. The error "... object $$a1c.1.1.01 cannot be found is displayed. (WINDOWS) Robust Library: Running a robust linear regression (Robust -> Linear Model) failed if Weights were specified. (WINDOWS) If you tried to save a document (for example sdd, sgr, or xls file) from within S-PLUS to "My Documents" folder, the save failed with the error message "Cannot write file. Possibly out of disk space or invalid path." The Update Project Preferences dialog box continued to appear on startup if you checked the "Do not check for outdated .Prefs files again" box and selected No. (WINDOWS) With network versions of S+, with SHOME set on a share on a Windows 2000 Advanced server, files could not be saved under their own name if Full Control was not enabled. (WINDOWS) When using the Copy Rows menu function with 'overwrite' off to copy rows from one data sheet to another containg data, row names were created in the target data sheet, even though neither source nor target data sheet contains row names. SPXML: In SPLUS_1_0.dtd, the DATA-OBJECT and LANGUAGE-OBJECT definitions changed to be "|" delimited. They were comma- delimited, which caused validation of XML files to fail. exit() had a typo in it that caused exit(T) to return a 0 to the shell instead of a 1. tempfile() incorrectly inserted the path twice when run in Batch mode. guiDisplayFileDialog() changed the value of the current working directory on Windows ".". (WINDOWS) If you opened a graphsheet in a minimized S-PLUS (using automation), the graphsheet was minimized. (WINDOWS) options(echo=T) did not work. Commands were not echoed in the Commands window, sink, or batch output files. (WINDOWS) In read_values (main/data.c) and readall<0 (summary object), if the class of the object was named, read the .Names slot. This applies to data.frames with the .Name slot also. For a=list(1:5,letters); names(a)=c("a","b"), the GUI OE would fail to get the names for the elements of the list. (WINDOWS) menuDiscrim with only one independent variable returned an error: Problem in apply (object$swf/sum(object$swf) * object$means, 2, sum): dim(X) must have a positive length. (WINDOWS) GUI loess: predicted values did not match command line output:fuel.frame x:Weight,y:Mileage; # output: 100, span .66, degree 1, fam Gaussian. Compare yLoess to output from loess.smooth(Weight,Mileage, span=.66,degree=1, family="gaussian",eval=100) (WINDOWS) Integration New toolbar buttons: You could create a button, but it would be unavailable, although it would show a tool tip. Did not work to create button through Object Explorer or with gui commands. (WINDOWS) The following code caused S-PLUS to become unresponsive and generated errors in Splus.exe when run in the script window: guiCreate("Toolbar", Name = "tpetoolbar", Index = "2"). (WINDOWS) S-PLUS XML: DTD functions did not work (e.g. parseDTD) Problem in parseDTD(dtdFile): error in DTD D:/PROGRAM New chapter created with Visual Studio wizard was different than (and inferior to) the chapter created by createChapter and makeChapter. Some Fortran-callable functions in sqpe.dll were not available because of underscore/capitalization differences (e.g., realpr) (WINDOWS) SPXML: SPLUS_1_0.dtd had no DisplayOptions tag, but S-PLUS generated output including this element. dyn.close failed when given a path that differed from what was given to dyn.open, but was effectively the same. (WINDOWS) 1. importData(type=""ODBC"",...) if the table was not specified, would use the table given in a previous command. In some situations, it would try to access a garbage table name. 2. after calling exportData(..., appendToTable=T), future calls to importData could be corrupted. Running register.ole.object("automationCOV") returned NULL [T] instead of [T] in S-PLUS 6.2 Pro. (Chapter 13 Programmer's Guide, pages 585-593). (WINDOWS) If you tried to pass an OLEClient object returned by a call to create.ole.object() in S code, to an automation server via call.ole.method() or set.ole.property(), you would get errors about automation failures and the call would fail. (WINDOWS) Line 50 in sconnect\\splist_com.cxx was incorrect. This example now compiles as intended. CONNECT/Java jni native methods crashed when evaluating try(stop("inner")); stop("outer") or sink("tst.log"); sink(); stop("test stop")";. Data S-PLUS returns to Java failed if data was a named vector. Java long values could not be passed to S-PLUS as integers. Specifying Types.BIGINT in the Java code did not work. The problem was in .JavaMethod(className, "getNextColumn", "..: java.lang.ClassCastException: java.lang.Long. library winjava: In MFC GUI, load the library and display the dialog box with javaDisplayDialog ("com.insightful.splus.statdlg.LinearRegressionDialog"), then fill in dialog. If Report Window was open, text would go to the report. If the Report Window was not open, toolbars would disappear and text goes to an unknown location. (WINDOWS) When calling .JavaMethod from S-PLUS 6.2 Windows, user CLASSPATH was not recognized. (WINDOWS) IO summaryReport() needed to use an absolute path for its tempfile; otherwise, the Java code looks in a different place for the file than S-PLUS. (WINDOWS) importData used the entire options()$time.in.format as the default time.in.format parameter, which included a space. This could have unanticipated consequences, even when reading in non-timeDate data. The startRow argument did not work with importData for text files. You would always get the entire file. (The same was true with endRow.) startRow and endRow work with importData on Windows. (UNIX) importData(..., type="SAS_TPT") or exportData(...,type="SAS_TPT") was appending an extra row of data (a repeat of the last row). Comma and tab delimited text files with missing values did not import correctly using importData. In a call to importData, you must set separateDelimiters=T. The GUI set Separate Delimiters if you specified ASCII file with anything but space delimited. (WINDOWS) Tab-delimited text files created in Excel X under Mac OS X failed to import properly in S-PLUS. Apparently, they did not recognize the end of line character from the Mac, as it imported the data as all one line. (WINDOWS) exportData(.., type="odbc") converted h:m:s component of timeDate objects to 00:00:00. (WINDOWS) openData failed on an SAS data file larger than 2 Gb, resulting in the warning "Warning: No variables in dataset" and getDataInfo showed no obsevations in the data file. This bug prevented users from "chunking" through large SAS files. data.dump/data.restore did not restore "-0" values correctly. javaXMLTransform() should resolve relative paths with respect to SHOME. javaXMLTransform() should look at the file extension to determine the type of transform to use if the type is not specified. JavaGUI Generalized Linear Regression would fail if Family = quasi. Function call created by GUI did not wrap value for 'variance' argument in quotes. (UNIX) Importing data sets (for example, ASCII and SAS) resulted in successful import, and you could observe the data.frame; however, the Java GUI did not list the data objects in any data S-PLUS; set drop list in dialog boxes, such as the Graph/Scatter plot dialog. (UNIX) When you would cut and paste from Wordpad or S-Plus for Windows into S-PLUS Unix using X-WIN32, it would result in bad data, or cause S-PLUS to become unresponsive. Language fuel.frame[NULL, 1, drop=F] failed. When using browser(), errors were not displayed; rather, they failed silently. The exclude argument of table() did not work with NaNs. Creating a timeSeq object that passed through daylight savings time (the first sunday in April) when the time.zone setting in options() was set to PST, which caused the error "Relative date addition resulted in non-monotonic sequence". all.equal.factor should check that target and equal have equal lengths before trying to compare objects. the date() function returned "Wed Apr 03 15:16:36 Wes 2002" in the German version of Microsoft Windows 2000, but the time zone "Wes" was not included in names(timeZoneList()), so the output from date() could not be used in a call to timeDate. (WINDOWS) Displays the error 'Problem: Relative date addition resulted in non-monotonic sequence' when trying to aggregate timeSeries data across a standard time/daylight savings time switch and when using by="minutes", k.by = 30, with aggregateSeries() for long time series. (WINDOWS) timeSeq returned the starting date, regardless of whether it is a weekend and you specify "bizdays". Also appeared to be an "off by one" bug if the time zone="GMT". (WINDOWS) Double evaluation occurred for 'value' in SV4-method for replacement function that dispatched on object and value. This caused a problem for ArrayAnalyzer's pm<-() function. If you used cut() on a timeSeries object with a single "positions" value, you would get the error "Problem in cut.default(x, breaks = ..1, labels =..: Number of labels must equal number of intervals". is.finite and is.number returned incorrect answers for data frames. aggregate.data.frame() failed to pass on additional arguments passed via “...” such as the na.rm arg to mean(). aggregate.data.frame did not provide the correct output when there were many 'by'columns with many categories in each and when product of the unique values in each column is greater than 2^31. masked() incorrectly indicated no masking if 6 libraries were loaded. (5 was fine) Apparently, any multiple of 6 had the same problem: masked failed with 12 databases attached. setMethod(...analyze=T) failed with several messages. aggregate() ignored additional arguments that should be passed to FUN. matrix() and array() should not accept illegal dimnames setAs required the function supplied to contain the argument 'object', but then did not check. Giving a 'def' with the wrong argument list produced an incorrect function with obscure errors or wrong results later. makeCallForMethod had trouble parsing if the name it constructed for the local function was not syntactically a name. seriesMerge() to merge a timeSeries with an unnamed column of data and a timeSeries with a named column of data, resulted in the column name being used for the first column in the merged timeSeries when it really applied to the second column. The names were switched. seriesMerge() corrupted the data when one of the timeSeries passed to seriesMerge() had more than one row with the same date. timeSeq and timeSequence returned a length of zero when constructing a date sequence where from==to. aggregateSeries generated an error when fed a timeSeries of length one. This caused problems in a batch process. timeSeq() did not handle exceptions correctly The stl() function failed if the data slot of the timeSeries object contained a data.frame with 1 column. "Positions and data lengths do not agree" shift() did not work if the timeSeries positions were created using timeSeq().x <- c(1:10); x <- timeSeries(data = x, positions = timeSeq("1/1/1992", "10/1/1992", by = "months")); x2 <- shift(x, 1). Problem in shiftPositions(positions(x), k): Could not shift irregular vector. Calling timeSeq() with by="weeks" and align.by=T with week.align unspecified: The command could be executed, but it was not really a timeSeq by weeks, but a cyclical pattern of 1th, 8th, 15th, 22nd, and 29th. The library function did not take a character variable as a library name. For example, 'library("toolkit",lib.loc="/sage/files/WAVELETS")' worked, but 'lib<-"toolkit"; library(lib,lib.loc="/sage/files/WAVELETS")' did not. Performance Importing a fixed width text file with 19 columns and 622000 rows took 8 hours to import into S-PLUS 6.2. (UNIX) openData for large text files was over 600 times slower in S-PLUS 6.x compared to 5.1. Apparently, openData tried to read through the entire file. Importing a large file using importData(...,type="DIRECT-ORACLE") took more than 10 hours on Solaris 64-bit. The file has 2 million rows and 4 columns. If you mixed importing and exporting data types DIRECT-SYBASE or DIRECT-SQL with type="ODBC" it would corrupt the next ODBC query. When importing large file with a character variable with "long" strings, performance could be extremely slow if you do not use stringsAsFactors=F. importData/exportData type="ASCII" slowed because of std_get() and std_putc() functions. They called feof(),ferror() for each character. There was no need to call those functions unless getc() or putc() returns EOF. Using the source command with echo=FALSE in batch mode resulted in S-PLUS becoming unresponsive. unique.default() would be faster if "names(x)<-NULL" were done first rather than second. Writing to network drives was very slow. importData from SAS, SPSS, others significantly slower in Splus6.2 compared to Splus6.1 For speed, replace apply(x,1,mean) with rowMeans(x). Similarly for columns, and for sum and var. daisy() failed with "unable to obtain requested dynamic memory errors" or S-PLUS became unresponsive when using a large dataset (14 rows * 12500 columns). Printing summary(exp(c(-20,100))) printed incorrectly. Reliability aggregate() caused a stack overflow in sqpe.dll if you specified a data.frame that had no values as in <0 rows>. Missing Library: Calls to daCgm() could have resulted in S-PLUS closing with the error Warning in restart(first): restart ignored after error (unless clear=T), while calling subroutine S_miss_doDabIpfMix. On Windows, you would receive the Invalid Frame number (0) error. With missing library loaded, you would see warnings when running the seriesMerge help file example. file() returned Terminating S Session: Signal: bad address signal Warning messages: Internal problem in U?WVS A more descriptive error message added for when /var/tmp is full. (UNIX) scal<-NULL; scal$mav<-function(x){1}; fred12 <- scal$mav; fred12(1)' caused S-PLUS to become unresponsive with "Terminating S Session: Bus Error signal". Error: 'Terminating S Session: Signal: bad address signal...' in testing formals<-(). Problem occurred in functions returning functions built from the inputs. Changing the date/time settings in S-PLUS corrupted the computer's regional settings. (WINDOWS) Upon startup, SPLUS.EXE consumed 2000+ OS handles. SpPoxis.dll is responsible for 1000+ on startup. Apparently, the Fortran compiler switch, threads, was conflicting with MKL multi-threading system. (WINDOWS) apply function displayed an internal error message when used on a matrix whose row dimension did not match the number of rownames. For Example: x <- matrix("", ncol=3, nrow=1, dimnames=list(letters[1:2], LETTERS[1:3])) apply(x, 1, paste,collapse=" ") S-PLUS session would become corrupted (sometimes without an error message) if seriesMerge was called on a NULL data timeSeries object. S-PLUS becomes unresponsive in a quasi-infinite recursion in the lgamma function. mclust failed to terminate. S-PLUS reference counting error occurred when changing default arguments for a function. S-PLUS reference counting error occurred when assigning default value to a function cor(..., trim=20) caused S-PLUS to not respond. For example, cor(air, trim=20) . The help file for cor stated that trim can be set to a number less than 0.5. Accidentally setting it to too large a number now generates an error. browser() stop command did not work. Using q() exited out of the browser, but using "stop" did not. cor(..., trim=20) caused S-PLUS to not respond. For example, cor(air, trim=20) . The help file for cor stated that trim can be set to a number less than 0.5. Accidentally setting it to too large a number now generates an error. browser() stop command did not work. Using q() exited out of the browser, but using "stop" did not. Statistics DOX Library: as.fac.design() returned incorrect results for the response variable if there was only one response variable. Missing Library: emCgm() failed on a dataset that contained only one numeric variable and one factor variable. Robust Library: plot() for lmRob() failed on the "Robust Residuals vs Robust Distances" plot when there was a single independent variable: plot(lmRob(Fuel~Disp., fuel.frame), which=4) mean(x, trim=a) failed for a > .5. Rather, it should just return the median. Problem with gnls and nlme.formula that caused S-PLUS to become unstable, due to the incorrect specification of the 'start' component of the 'Dims' attribute of the correlation structure. glm(y~1, ...) did not have a prior.weight component. glm(y~1, ...)$prior.weight returns Null. Bug in lm.fit.qr identified. Bug in survexp.cfit caused survexp to fail with the error "Problem in Ops.Surv(e1, e2): Invalid operation on a survival time". fac.design with specified factor.levels created an invalid design object with no column names. Bug in the function print.summary.fit.models in robust library. (WINDOWS) print.htest had argument digits=4 which was ignored; always does format(..., 4) (or format(..., 3)) loess failed with ' Problem in .C("loess_raw) subroutine loess_raw: Missing values in argument 2' if the data contained a large marjority of 0 values. print.arima failed to print the Model and Coefficients of an object produced by arima.mle. AIC.lm did not work correctly when na.action="na.exclude", due to a bug in logLik.lm (in nlme3). In lme, when all of the observations for one of the levels of a fixed effect factor variable were missing, lme failed in its C call to mixed_EM. Pixel$day <- factor(Pixel$day);Pixel$pixel[Pixel$day=="0"] <- NA;lme(pixel~day,random=~1|Dog,data=Pixel, na.action=na.exclude) Passing a vector of length 192 containing some negative numbers to acf() failed with the error: missing values in the midst of time series. Problem in acf(), There are missing values in midst of time series. (WINDOWS) When using 'subset' argument in 'factanal()' with a factor variable, S-PLUS returned the error 'Problem in close(file): only connection objects or character strings meaningful objects'. This happened only when method="mle". (WINDOWS) ------------------------------------------------ II. ENHANCEMENTS Graphics postscript() now uses Latin1 encoding by default so European users can easily get ISO 8859 characters. (UNIX) trellis graphics are now allowed the change of cex in tick mark lables on x and y axis. For example, dotplot(formula,cex=2) affects only font size within panels, but not on the axis. segments() function now draws a point for a zero-length segment. trellisPlot.timeSeries() now offers the ability to control the dark vertical strips (for example, displaying the time when the market is closed). The plot.lm function now accepts the cex parameter for all plots. Graphlets Graphlets printing is improved by using Java Graphics2D if it is available within the applet. GUI Buffered output now supported in the Script window. This support is controlled by the same option in the Command Line options dialog and Ctrl-W. (Windows) The default date/time is now GMT. Using the Regional Settings option controls behavior, and allows you to use previous release (S-PLUS 6.0) behavior, which uses local time zone information. (Windows) The two pairwise robust covariance estimators in the Robust library are now available from the GUI. (Windows) Added decimal.point and thousands.separator to Import Data and Export Data dialog boxes in Windows GUI. (Windows) S-PLUS Windows GUI now supports dual-monitor displays. The shortcut key F9 now is an additional key (with F10) to run code in the S-PLUS GUI. Previously, this key refreshed graphs. (Windows) Changing the size of the commands window no longer changes options()$width, the text output in reports, or the lower half of script windows. (Windows) Bold, Italic, and Underline buttons are now available in the Report Window Toolbar. Integration Added C++ example of writing a tree control that displays S list objects and imposes containment rules while supporting full drag and drop editing. This control is useable in any S-PLUS GUI dialog. (Windows) Added a Quit() method of the Application object to the GUI so automation users can close down S-PLUS via automation if any documents were created during the session. (Windows) Calling S-PLUS from a customer application fails. The S-PLUS splash screen appears briefly and then exits with no error messages. This is also a problem for customers when the number of environment vars is greater than 100 passed to S-PLUS. Help now describes that more than 100 variables now supported. (Windows) The splus.ini file, which resides in the cmd directory, was missing from the release. This file was mentioned in the S-Plus Programmer's Guide. The winjava library was updated (Windows) The connection to the winjava library was enhanced to allow interactive commands such as history() and menu(). (Windows) Support added to address previous problems printing graphlets from Internet Explorer 5.5 or 6. See Help for information about new graphlet-printing capabilities. (Windows) javadoc added to the winjava library. (Windows) You can now avoid undesired section headings. For .d help files, now provide support for help hyperlinks outside of the .SA section. CONNECT/C++ now includes the C++ class CSPsetjmp to allow more flexible use of setjmp/longjmp in sconnect code. Added an example XSL file for transforming general XML into an S-PLUS list. Added a loggingLevel argument to summaryReport so different loggingLevels can be specified as a debugging aid. This argument is passed on to the xml transform function. (Windows) SBATCH provides the option to start the console (sqpe.exe) of S-PLUS for Windows. Default continues to start the full S-PLUS (splus.exe). The Console version does not start up the GUI, which frees memory for analyzing larger data sets. (Windows) IO Native/ODBC Con: Ability to maintain a connection to a database while executing a series of SQL statements, allowing the creation of session-based temporary tables. Changed the default for options()$time.out.format from "%02m/%02d/%Y %02H:%02M:%02S.%03N" to "%02m/%02d/%04Y %02H:%02M:%02S.%03N". This highlights errors where example datasets reported the wrong year. openData() now has a separateDelimiters argument. importData now contains an option to import data from a text file that contains a non-standard character as a placeholder for missing values(NA's). This effects especially SAS-Users because SAS uses a '.' to indicate a missing value. (Windows) The default value of the new separateDelimiters argument to importData is now T, not F for CSV files. With it set to F, two consecutive commas in a CSV file are interpreted as a single comma and the implied missing value is skipped. JavaGUI File > Print Setup options on Linux has been enhanced. (UNIX) Language dim(timeSeries or signalSeries object) now returns matrix dimensions. Error message format has changed. (Windows) The help file for deprecated functions has been updated. browser() interaction when called from a GUI function, has been improved. Help is now case-sensitive. For example, previously, help(gamma) displayed the help page for GAMMA. (Windows) aggregateSeries now retains the '\'. var and cor now support data types timeSpan, positionsCalendar, and seriesVirtual. var(x, y=aTimeSeriesObject) is now supported. The function match.path() was added. This function determines whether two paths refer to the same item. Added "GDT" (GMT daylight time) to the time zone list. Otherwise converting date() to timeDate() returns NA. You can now set the entire contents of a timeSeries to one value. (Windows) The history() and again() functions now work on Windows. (Windows) The function anyMissing() is now available in the core product. Previously, it was available only in the Missing library. try() now supports nesting calls. The methods [[, [<-, and [[<- are now supported for numericSequence objects. A new argument, align.by, has been added to aggregateSeries (Windows) casefold follows locale when you switch cases of letters. New feature in aggregateSeries to include the left endpoint of each bin. S_LANGUAGE sample() function modifications corrected previous problems. Statistics The nclass.fd() and nclass.scott() functions now handle missing values. Survival library updated with latest fixes. NLME library updated to 3.3.2 on Windows and UNIX. Addition of multicomp method for lme, multicomp.lme, as part of distributed S-PLUS. lme function now drops unused levels. density includes the new feature of expanded variety of bandwidth selection rules.