In this release of S-PLUS, we have continued our drive to improve the reliability, accuracy, usability and performance of the S-PLUS language engine and interfaces. Areas in which we have made improvements in this 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 You can now import images (such as maps generated by other applications, in formats such as *.jpg and *.gif) into S+Graphlets, so that hot regions for drill-down links and tool-tip displays can be defined and displayed on top of such images. The SOAP Query action now works in current jar file. Graphlets printing is improved by using Java Graphics2D if it is available within the applet. Graphlets now allow 'action' (as with 'java.identify') for a non-rectangular area. (Windows) 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.