Release Notes for S-PLUS 7.0.3 for UNIX/Linux (August 2005) These release notes are current as of August, 2005. This file contains the following information: About This Release Module Support Running S-PLUS What’s New in S-PLUS 7.0.3 What is New in S-PLUS 7 Known Issues in S-PLUS 7 Changes to Language Functions Supported Platforms and System Requirements Installing S-PLUS Using S-PLUS for UNIX from a Windows Desktop Getting Help in S-PLUS Contact Information for Feedback ABOUT THIS RELEASE S-PLUS 7 is a major new release of the S-PLUS Product Family, with a focus on providing a robust environment for creating statistical applications applied to very large data sets. S-PLUS 7 is available in two editions: S-PLUS 7 Professional Developer and S-PLUS 7 Enterprise Developer, and improves upon S-PLUS 6.2 in the following areas: Available in S-PLUS Enterprise Developer: Big Data Library S-PLUS Eclipse Workbench Developer Tools Available in S-PLUS 7 Enterprise Developer and S-PLUS Professional Developer: New correlatedData library Improvements to timeSeries objects FLEXnet license management system Various new functions and other minor new capabilities There are also a number of enhancements to existing functions, and improvements to quality in several areas. MODULE SUPPORT S-PLUS 7 includes support for the following S+ modules. These modules require a license to use. Module Version Platform S+ArrayAnalyzer 2.0.4 Windows S+FinMetrics 2.0.2 Windows, Solaris, Linux 32-bit S+NuOPT 1.6.2.0b Windows, Solaris, Linux 32-bit S+Wavelets 2.0.2 Windows, Solaris, Linux 32-bit, HP, and AIX S-PLUS for ArcView GIS Link 1.1.1 Windows S+EnvironmentalStats 2.0.3 Windows S+SeqTrial 2.0.3 Windows S+SpatialStats 1.5.7 Windows, Solaris, Linux 32-bit, HP, AIX The following modules have not been changed: S-PLUS for ArcView GIS Link S+EnvironmentalStats S+SeqTrial S+SpatialStats What's New in S-PLUS 7.0.3 S-PLUS 7.0.3 includes fixes to bugs not found before S-PLUS 7 and 7.0.2 shipped. For more detailed information, see the section Bugs Fixed in S-PLUS 7.0.3 or the file FIXEDBUGS.TXT, included on the product CD. RUNNING S-PLUS Before starting S-PLUS, you must do the following: 1. Set your DISPLAY environment variable to your local machine, if necessary. 2. Create an S-PLUS chapter to contain your work. 3. To use the Java related features of S-PLUS, you must be able to connect to your local X window server. Thus, you must have the environmental variable DISPLAY set and the X window server on your local machine must allow the S-PLUS server to create windows on your machine; see the UNIX programs xauth or xhost. Typically, if you can run xclock on your machine, then S-PLUS should also be able to access the X server. To set your display from a C-like shell (csh, tcsh, etc.), use the setenv command: % setenv DISPLAY where is the name of your local machine. From the Bourne- and Korn-like shells (including sh, ksh, bash, etc.), use the following commands: % DISPLAY=;export DISPLAY You do not need to do this if your DISPLAY variable is set already; check the output from echo $DISPLAY to be sure. Creating an S-PLUS chapter is necessary for storing the data objects and external files you create in S-PLUS. The following commands create an S-PLUS chapter named mysplus for you to work in (be sure you do not have a mysplus directory in your home directory before typing these commands). % cd % mkdir mysplus % cd mysplus % Splus CHAPTER If you do not create a chapter, S-PLUS automatically creates one for you named MySwork the first time you start S-PLUS. You are now ready to start S-PLUS. S-PLUS may be launched in a variety of modes. The following table lists each UNIX command-line expression and the corresponding mode for launching it. In all of the commands below, Splus refers to the script you use to launch S-PLUS 7 on your system. Command-line Expression S-PLUS Mode % Splus S-PLUS command line without Java. % Splus -j S-PLUS command line supporting Java calls, Java graphics, and the Java help interface. % Splus -bigdata S-PLUS command line with the bigdata library. (Enterprise Developer edition only.) Also loads Java. % Splus -g or % Splus -g & S-PLUS graphical user interface. The second command using the ampersand "&" puts the GUI process into the background, freeing your xterm for other uses. The -e flag may be added to either of the first three modes to enable command-line editing. The Commands window in the graphical user interface always allows basic editing. -helpoff S-PLUS without the automatic invisible startup of the help system. The -helpoff flag is useful only with the -g flag. The invisible startup improves initial responsiveness of the help system but adds a significant memory footprint to the current session. If you want to optimize your available memory, this flag may prove useful. % Splus -w or % Splus -workbench S-PLUS Workbench, the Eclipse IDE plug-in that provides a work environment integrated with S-PLUS Enterprise Developer edition only. % Splus -w -bigdata & Loads the S-PLUS Workbench and the big data library. Note: The S-PLUS Workbench is not supported on HP-UX. WHAT'S NEW IN S-PLUS 7 S-PLUS 7 includes a variety of new features that extend S-PLUS capabilities. Major additions include: New Big Data Library (Enterprise Developer only) S-PLUS Eclipse Workbench Developer Tools (Enterprise Developer only) New FLEXnet License Manager New correlatedData Library New Functions New Model Type: Cox Mixed Effects Models timeSeries Object Improvements New Color Scheme for Graphics Devices Higher Quality Graphlet Printing Capability Other Enhancements Fixed Bugs This section briefly describes these new features and other enhancements. Enterprise Developer Features New Big Data Library (Enterprise Developer only) The Enterprise Developer edition of S-PLUS 7 introduces the Big Data library. The Big Data library provides functionality for efficiently manipulating and analyzing out-of-memory data. The Big Data library functions have no limits on the number of rows in the data. As summary information is computed and stored for each column, the number of columns is slightly limited, with the current implementation supporting tens of thousands (10,000s) of columns on a typical machine. For details about loading the Big Data library, see Running S-PLUS. The Big Data library is not loaded by default when you start S-PLUS from the S-PLUS Workbench or as a console application. Always load the Big Data library if you work with big data projects. (If you start a big data project without having loaded the Big Data library, you will see errors when you run your script.) Find help for the Big Data library in the Enterprise Developer User's Guide, found in the PDF file eduserguide.pdf, which is available in the SHOME/doc directory. Help for individual functions are integrated in the language help. You must set your DISPLAY environmental variable before you start S-PLUS with the Big Data library loaded. For information on setting the DISPLAY variable as well as the available options for running S-PLUS, see the section Running S-PLUS. S-PLUS Workbench Developer Tools (Enterprise Developer only) The new S-PLUS Workbench is our first release of an integrated environment for S code development, based on the Eclipse framework. This release offers the core functionality of code editing, syntax error detection, project and task management, interfaces with source code control systems, and interaction with the S language engine. In future releases we plan to extend this environment based on customer feedback, with a view to making the S-PLUS Workbench a complete environment for robust and professional code development in the S language. Find help for the S-PLUS Workbench in the S-PLUS User's Guide, Chapter 8, which is available in the PDF file unixug.pdf, which is available in the SHOME/doc directory. Alternatively, in the S-PLUS Workbench, click Help > Help Contents, and then in the Help UI, click S-PLUS Help. Note that the S-PLUS Workbench is not supported on HP-UX. New FLEXnet License Manager In response to demand from commercial customers seeking an industry -standard system for managing software licenses, the S-PLUS Product Family now uses the FLEXnet system from Macrovision (previously known as FlexLM) for license management. The interface for managing licenses and monitoring license usage will be familiar to many systems administrators, and offers a much greater degree of flexibility and reliability than the license management system used in previous releases of S-PLUS. Note that all editions of S-PLUS require a license. Further information about the license management system can be found in the Installation and Administration Guide, which is available in the SHOME/doc directory. New correlatedData Library This library compares favorably to elements of SAS PROC GENMOD, PROC MIXED and the GLIMMIX macro. It has significant applications in life sciences, finance and other markets. In life sciences, for example, its use is particularly relevant in the clinical development area. Load the correlatedData library by entering the following in the Commands window: >library(correlatedData) New Functions Use the following new functions to compute minimum, maximum, or range by row or column. These functions are much faster than using an apply() call: colMins colMaxs colRanges rowMins rowMaxs rowRanges Use the new function allTrue in combination with all.equal for writing automated tests to be called by do.test. Use the new function expectWarnings to write your own automated tests (i.e., to be run using "do.test"). Using expectWarnings, you can suppress unavoidable warnings and test that warnings your functions should produce do occur. (This function has no help topic in this release.) Use the new function pedigree for support for pedigree plotting. See its help topic in the Language Reference for more information. Use the new function bdsmatrix for support for sparse block diagonal matrix objects. See its Help topic in the Language Reference for more information. Use the new function unname, which removes names or dimnames from a object. This can make calculations run much faster (see example in the help file) New Model Type: Cox Mixed Effects Models The new function coxme allows you to fit a Cox model with random effects to censored data. Random effects can be specified with a syntax similar to that used for linear mixed-effects models with lme(). timeSeries Object Improvements The following new methods and functions for timeSeries and similar objects are now available: More powerful column-wise summary statistics for timeSeries objects are now available: {col, row} {means, sums, vars, stdevs, mins, maxs, ranges} col {products, medians, quantiles} etc. New powerful functionalities to compute the length of time series, lags of time series, differences of time series, sort time series, and random sample time series: seriesLength(), seriesLag(), diff method, sort, sample method New function to detect month end dates: is.monthend() New method functions for arima modeling and a new arima prediction function: summary, coef, vcov, residuals, fitted, predict New powerful multiple timeDate, bdTimeDate and time series-sensitive subscripting, such as myTimeSeries[ timeEvent( c("1/1/01", "1/1/02"), c("4/1/01", "4/1/02") ), cols ] myTimeSeries[ timeEvent( "1/1/01", "1/1/02" ), cols ] <- myNewData Improved delta t and frequency method for time series to accommodate end of month regular time series and to be consistent with old style time series classes. More functions now work with time series objects: apply, lapply, hist, density, pmin, pmax, order, rank, chisq. gof, ks.gof, cdf.compare, cor.test, var.test, t.test, wilcox. test, pairs, barplot, boxplot, lsfit, l1fit, rreg, lmsreg, ltsreg, location, ms, nls, nnls.fit cov.mcd, cov.mve, cov.wt, kmeans, dist, mclust, princomp, factanal, etc. Improvements to plot and trellisPlot (which also apply to signalSeries): xlim and ylim are now fully supported (they were not in previous releases). You can now use the at and labels arguments to axis.time and axis.numeric (via the x.axis and y.axis arguments to plot and trellisPlot) to override the default axis tick mark positions and labels. New Color Scheme for Graphics Devices The default colormaps for the various graphics devices have been changed so they all gave a fairly similar result. The color settings were chosen to work well with both ordinary and Trellis style plots. The main difference is in the image color settings. For color plots, various shades of blue from light (low values) to dark (high values) are now used. For black-and-white devices, the shades of gray are now light gray (low values) to dark gray ( high values). All graphics devices now automatically have the trellis.settings attribute set for them. To Use Old Color Settings: Graphsheet To use the old color settings, for every session, run the following function: stdImageColorSet(blue=F) This must be done in every session because stdImageColorSet(blue=T) is called in the startup file S.init. You can remove the call to stdImageColorSet in S.init; the file is in the top level directory where S-PLUS is installed. Note that this may change for the release. java.graph device The old colorscheme is available in the list java.colorscheme.standard.6.2. If you call: java.colorscheme.default <- java.colorscheme.standard.6.2 all subsequent calls to java.graph (where the colorscheme argument is not explicitly set) in the current project directory will use the old colorscheme. If you switch to a different project directory you will need to create the java.colorscheme.default object ( as shown above) again. pdf.graph and wmf.graph Set the colorspec argument to pdf.colors.6.2 or pdf.grays.6.2 to get the old colormaps. PostScript device You can set the new argument: old.style=T to get the old behavior. A new argument, color.p has been added to the PostScript device. Setting color.p=T (or just color=T) will create color PostScript output using the new colormaps. The default is color.p=F so that postscript will continue to produce black-and-white postscript by default. The behavior and setting of graphics devices started with the trellis.device function has not changed. Changes to the motif device: A new argument, color, has been added to the motif function. If color=T (the default), then a new default color scheme is used. This color scheme matches the default color schemes for the other devices described above. It has a white background but it still works well with Trellis displays. This new color scheme appears in the Options > Color Scheme ... dialog box (accessed from the motif window) as "Standard". There is also a new "Standard B&W" color scheme that appears in the Options > Color Scheme dialog box and this scheme is used if you set color=F when calling motif. The Trellis color scheme has also been added to the list that appears in the Options > Color Scheme. It differs from the color scheme used by trellis.device(motif) only in the image colors. It uses the cyan-white magenta colors instead of a gray scale. If you have Saved your Color Scheme selection from the Options > Color Scheme dialog box, then it overrides the color argument in the call to motif(). You can avoid this behavior by setting the new argument, ignore.sgraphrc, to T when calling motif(). See the motif help file for more information about settings that get saved in the .sgraphrc file. Higher Quality Graphlet Printing Capability The Graphlet code in spjgraph.jar now determines whether the Ggfraphlet is running in a JVM (Java Virtual Machine) that can handle the more-recent Java printing (including rotated fonts), and uses this when printing from the Graphlet Print button. In particular, plot labels print much better; the previous code caused the characters to print with "jagged" edges. If the JVM is old (such as the default Microsoft JVM in Internet Explorer), then the printing is the same as before. To get the new printing, you will need the Java Plug-in. For comparison purposes, you can get the old printing behavior (even with a new JVM) by specifying the applet property: The new printing code uses a new Print dialog box, where the printer is specified with a separate Printer button. The changed code affects only the print quality when you use the Graphlet Print button to print the contents of the Graphlet. It does not improve the print quality when you print a whole browser page that includes a Graphlet. We believe this is because of the way that browsers handle printing Java applets (and therefore is beyond our control). For example, try printing out the page http://www.insightful.com/products/Graphlets/gallery/ TestJavaApplet.htm which contains a simple applet drawing a box with crossed lines. In the printed page, the diagonal lines print characters with "jagged" edges. Other Enhancements IO 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. importData now supports access to self-authenticating Oracle accounts. For example: importData(type="ORACLE", server="ORACLE.DBNAME", table="TABLENAME", password="self") imports the table "TABLENAME" from the specified server. Note: You must specify password="self" to use the self- authenticating feature. Language dim for the timeSeries or signalSeries object now returns matrix dimensions. The help file for deprecated functions has been updated. Trellis graphics now allow the change of cex in tick mark lables on the x and y axis. For example, dotplot(formula,cex=2) affects only font size within panels, but not on the axis. 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. 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 casefold follows locale when you switch cases of letters. A new feature was added in aggregateSeries to include the left endpoint of each bin. Statistics 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. Bugs Fixed in S-PLUS 7.0.3 Changes to the Big Data library function bdGlm: 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. Changes to S-PLUS glm and bdGlm give different answers when family = poisson and link = identity. Bugs Fixed in S-PLUS 7.0.2 Changes to S-PLUS cumprod returned incorrect results with a logical vector. This problem has been corrected. The gsub function dropped 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. 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. try()/restart() caused a warning list to be printed for each caught error. This problem has been corrected. The lag argument in the diff function handled only explicit numeric values. The argument can now handle numeric objects. SBATCH changes 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 -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. Changes to the bigdata library Arithmetic operations with bdFactors now can produce NAs, so it works the same 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. 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. tapply changes 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. Using tapply with a bigdata object produced an error when the INDICES argument included unused levels. It would silently return incorrect results. The function now returns a meaningful error. Changes to the S-PLUS 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. 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. Corrections to Help The Help file for SBATCH was missing. It has been added, along with a link to BATCH help file. The Help file for bd.sql was missing. It has been added. Changes to Licensing If no license was available, Splus would fail with a S IGSEGV error after printing the no-license error message. The SIGSEGV error no longer appears; S-PLUS fails gracefully when no license is available. Bugs Fixed in S-PLUS 7 Reliability: Crashes and reference counting errors in some unusual conditions have been resolved, including when calling file() with no arguments, when modifying function objects directly, when calling aggregate or seriesMerge with a zero-row data frame or with factors with many levels, and when calling apply on a matrix with dimnames of the wrong size. Hanging conditions caused by calling the functions cor, lgamma and mclust with certain arguments have also been resolved. S-PLUS is now more robust to system environment limitations, such as lack of temp file space and lack of file handles (it now uses far fewer). Performance: Reading text files is now much faster, thanks to code optimization and changes in how S-PLUS scans the file for column types. Importing from SAS, SPSS and Oracle is also faster in many cases. Writing data to network drives has been optimized. Many functions (too numerous to list) have had their S code optimized to use more efficient idioms, and others such as mean() and median() have had their internal implementations optimized for greater efficiency S Language: Several fixes have been made to timeSeries methods to correctly handle time zone issues and multiple observations on the same date, and timeSeq now correctly handles some execptional cases. aggregate can now pass additional arguments to the aggregating function. matrix and array are now more strict when checking validity of dimnames. Problems reported with browser() have been resolved. Statistics: Fixes were made to bugs in modeling functions which prevented them returning results when given data sets with unexpected patterns of missing data or missing factor levels; the functions fixed include lme, nlme, gnls, survexp, acf, factanal, loess, fac.design, emCgm, daCgm, AIC (for lm objects when na.action=" exclude") and proj (for aov objects). Some modeling functions now return computations absent in previous releases, including glm (which now returns prior.weight for a null model) and print.arima (which now prints the model and coefficients). Accuracy: Corrections have been made to the results of certain functions that could give inaccurate results for certain arguments. These include glm (corrected standard errors when family=binomial and response specified as a vector of proportions), qt, qf and qbeta for some extreme arguments, t.test (correctly use pooled variance when appropriate), and ks.gof (for very long x and y arguments). Working with Data Sources: Importing and exporting from ODBC sources is now more reliable, especially when using SQL queries. importData is now more careful in its handling of time formats, field delimiters, and user-specified starting rows. Command-Line Graphics: Hanging problems with some command-line graphics functions (such as plot) that occured when passed extremely large values have been resolved. Plotting multiple timeSeries objects is now more reliable, and the xlim and ylim arguments are now correctly handled. For a complete list of bugs fixed in this release, please refer to FIXEDBUG.TXT. KNOWN ISSUES IN S-PLUS 7 Big Data Library (Enterprise Developer only) Big Data glm models: A list of the currently known issues: gamma and inverse.gaussian families are not working yet; they give unpredictable estimates. offset is not supported. null deviance in the summary is incorrect. bd.data.viewer does not view bdTimeSeries objects. bdFrame(matrix) is slower than as.bdFrame(matrix): workaround is to use as.bdFrame(matrix) if performance is an issue. S-PLUS Eclipse Workbench (Enterprise Developer only) WARNING: S-PLUS 7 for Unix uses JRE version 1.4.2 (HP-UX uses JRE version 1.4.1). With this version of the JRE and Eclipse 3.0.1, using java.graph results in an error. We recommend that you use the motif() graphical device. See the Eclipse Web site (http://www.eclipse.org/) for more information about the Eclipse platform and the JRE. The S-PLUS Workbench is not supported on HP-UX. The Graphical User Interface If you see a message that contains: "Cannot connect to X11 window server using ...as the value of the DISPLAY variable" when attempting to start S-PLUS, this most likely means you forgot to set your DISPLAY environment variable. See Running S-PLUS for details. If you see messages about a connection to your display being refused by the server, you may need to use the UNIX xhost command to allow access to your X server from the S-PLUS server. The Data Set lists in dialog boxes display the names of data frames in your working directory. To see built-in example data sets, assign them to your working directory by typing commands similar to the following in the Commands window: fuel.frame <- fuel.frame catalyst <- catalyst environmental <- environmental Alternatively, you can click View > New Data Viewer, and then type the name of a built-in example data set into the Data Set text box. The Java menus and dialog boxes are equipped with keyboard shortcuts that allow you to use your keyboard instead of the mouse to navigate the GUI. The keyboard shortcuts are indicated by underscores in menu and field names; combine these with the ALT key or its equivalent to navigate the main menu. For example, ALT-F opens the File menu, and once that menu is displayed, pressing E displays the Export Data dialog box. Similarly, ALT-G will open the Graph menu, and then pressing S displays the Scatter Plot dialog box. Within dialog boxes, use the ALT key together with the indicated keyboard shortcuts to navigate to a desired field. For example, in the Scatter Plot dialog box, use ALT-F to navigate to the x Axis Value box. Cutting, Pasting, and Interrupting The GUI (including JavaHelp) uses the GUI-standard CTRL-C/CTRL-V for cutting and pasting. Because CTRL-C can be interpreted as a copy command, the GUI version of S-PLUS uses ESC as its interrupt key. On some X displays, you may need to double-middle-click to execute a paste in the Commands window. Java Display Issues To run the Java GUI on a remote display, you must have a display that supports the X Window System. This may be either a UNIX display or a PC running an X server such as X-Win32 or Reflection X. A text-only connection such as telnet does not support graphical applications. Java has a number of known problems displaying on a remote display using the X Window System. For this reason, we suggest (if possible) that you limit your use of the Java-based GUI in this release to the console of the machine on which S-PLUS is installed. That is, treat this release of the Java-based GUI as a workstation release, rather than as a network client/server release. Known problems with remote display include the following: If the graphical user interface does not start on Solaris, you may need to patch your operating system. See Supported Platforms and System Requirements, below. Font substitutions produce awkward-looking fonts in menus and dialog boxes. Dialog boxes tend to refresh slowly. A dialog box may display initially with a gray background and take five or six seconds to refresh completely. When using a remote display, Java renders the display on the server and then sends a bitmap of the application region to the remote display. The amount of information sent scales with the color depth of the display. With a Windows display, set the display to 256 colors for best performance. When running S-PLUS on Solaris and displaying on Linux, the Java virtual machine will not work properly with a 16 bit color display. Set your display to another color level to run Java properly. Our experience to date suggests that Java on Linux is more reliable than Java on Solaris for remote displays. Java on Solaris appears to have some implementation issues that hinder proper display on non-Solaris displays. Dynamic Memory Issues The amount of memory available to a particular user in UNIX is controlled by various limits. To see them, type: % limit at the UNIX prompt on your system. The defaults returned may be too small for S-PLUS. On one machine at Insightful Corporation, for example: % limit datasize is 131072 kbytes by default. This can lead to S-PLUS running out of dynamic memory sooner than it otherwise should. The fix is to increase the limit, as in the following command: % limit datasize unlimited Some user limits are constrained by system limits that must be set by the superuser. If you maximize your user settings but still have dynamic memory problems, you may need to contact your system administrator to raise the system limits. Shared Libraries If you compile C or Fortran code for use with S-PLUS 7, note that 32-bit and 64-bit versions of S-PLUS 7 both produce makefiles that create shared libraries named S.so by default. These libraries are incompatible between versions and must be compiled for either 32-bit or 64-bit versions of S-PLUS. We recommend creating shared libraries with different names for each platform (such as S_64.so and S_32.so). You can then use dyn.open to open these libraries, if desired. Other Known Issues When starting S-PLUS on a display for a machine that has a different operating system than the machine on which S-PLUS is running, you may receive a large number of warnings with a message such as "Font specified in font.properties not found [fontname]." In most cases, this and similar messages can be safely ignored. When FUN is a generic function, lapply and sapply sometimes do not find the proper function when you call lapply(X,FUN). Instead, use lapply(X,function(x)FUN(x)). This workaround applies to any function that takes another function as an argument, not just to lapply and sapply. The following is an example using the recommended workaround: sapply( as.bdFrame(fuel.frame)[,-5], function(x) floor(x)) Error boxes from modeling dialog boxes do not have "always on top" status. They may become hidden behind the dialog box where they cannot be seen. On some remote displays, menu selections are not recognized if any part of a menu falls outside the application region. If dialog boxes fail to appear, increase the size of the application region to assure it contains the full menu. Dialog boxes do not always recognize the ENTER key as equivalent to pressing the OK button. In particular, if the focus is on a combination box, the ENTER key is not recognized as the equivalent to the OK button. A workaround is to either press OK using the mouse or use the TAB key to move the focus to a field that is not a combination box and then press ENTER. HP Problem with ksh: The practice of preloading libpthread.1 disrupts ksh. If you call UNIX script with the first line #!/usr/bin/ksh (a common way to force a specific shell to execute the following script text), the call causes a coredump with an error message, but continues thereafter. Using /usr/bin/sh and /usr/bin/csh causes no similar problem. Workaround: To work around this problem, replace unix("ksh.script.file") with unix("LD_PRELOAD= ksh.script.file") For more information about this problem with ksh, see http://forums1.itrc.hp.com/service/forums/questionanswer.do?admit =716493758+1105464226973+28353475&threadId=192737 This forum site contains descriptions of the problems and examples that HP users have had when LD_PRELOAD=/usr/lib/libpthread.1 was set. Another technique that users have found successful is changing /usr/lib/libpthread.1 to /usr/lib/pa20_64/libpthread.1 in the S-PLUS startup script. Users report that HP is aware of the problem with ksh. Users experiencing this problem should contact HP for more information. CHANGES TO LANGUAGE FUNCTIONS Changes to is.nan(x), is.infinite(x), is.finite(x), and is.number(x): is.nan(x) and is.infinite(x) now return matrices if x is a matrix. This matches the behavior of is.na(x). is.finite(x) and is.number(x) now return meaningful answers if x is a data frame, rather than just returning F for every element. Changes to sample sample() is now generic. There is a data.frame method that samples rows rather than columns. There are methods for series objects and bigdata objects; the bdFrame method also samples rows. sample has the following new arguments: n Sample from 1:n (this avoids ambiguity) minimal This does two things: 1. Uses sampling "with minimal replacement" (with size > n). 2. Uses different algorithms, which are faster and give correct results when sampling without replacement with unequal probabilities. order If F, then output does not have to be randomly sorted (this helps speed, especially for bigdata objects). For series objects, order=F is the default, giving output in time order. bigdata If T and sampling from 1:n, return a Big Data object Trellis Graphics Functions Accept bigdata Objects (Enterprise Developer only) Many of the Trellis graphics functions now accept a bigdata object (class "bdFrame") as the data argument. The plots they make will look a bit different than the plots made from the equivalent data.frame. The changes in appearance are so that plotting very large datasets results in a bounded amount of "ink" on the plot. For all Trellis graphics functions with data="bdFrame", if you give a numeric variable on the right side of the vertical bar, it will be converted to a shingle using equal.count(x). You can use the shingle.fun= and shingle.args= arguments to override this behavior. You cannot use equal.count() explicitly in the formula. To use splom() with data="bdFrame", you must use a different syntax for the formula than is used with data.frames. The syntax resembles that for modeling functions. ~. means to plot all columns, ~.-Col2 means to plot all but the one called "Col2", and ~.|GroupVar means to split the data by the values in GroupVar, and for each subset, plot all the variables except GroupVar. New Function: rsample Performs the core calculations for some sample() methods, and may be called directly: rsample (n, (other arguments like sample)) Changes to segments and arrows segments and arrows have a new argument (subset) to draw only a specified subset of specified segments or arrows. segments has a new optional argument (zero) to prevent drawing zero-length segments. Changes to matrix and array matrix and array now prevent creation of matrices and arrays with illegal dimnames (wrong number of dimensions of size or dimensions). Changes to predict The predict method is now available for a small data arima.mle model or arima data objects (instead of arima.forecast). predict.arima standardizes arima.forecast, especially with the new time series objects. Changes to sum sum (a single-column data frame, where the column is logical) now works correctly; similarly for other Summary functions. sum (a data frame containing character and factor columns, na.rm=T) now omits those columns; similarly for other Summary functions. Changes to importData and exportData Important change in behavior: importData argument default changed: separateDelimiters=T In previous versions of S-PLUS, the handling of separateDelimiters when this argument was not specified was confusing. If the argument is not specified, it would be F, unless the file name had an extension of "csv", in which case it was T. Now, the default is simply specified as separateDelimiters=T, without regard for the file name. Warning: Code that calls importData to read ASCII test files without specifying the separateDelimiters argument may read different values. The importData argument separateDelimiters specifies how repeated consecutive delimiter characters are treated when reading ASCII text files. If separateDelimiters=T, repeated delimiters indicate columns with missing values. For example, reading a line "1,,2" with a comma as the delimiter reads three values, with the middle one as a missing value. If separateDelimiters=F, repeated delimiters are treated as one delimiter. This is most often used to treat multiple blank spaces as a single delimiter. With this change in the default, specify separateDelimiters=F when reading files with blanks as the delimiter. New importData argument: scanLines scanLines specifies the number of lines that are scanned from an ASCII input file before performing the import to determine the column name and types and widths. The default value is scanLines=256, to speed up importData for large data files. This should work fine with most ASCII text files. To be completely sure of handling cases where scanning the first 256 rows is not enough, importData should be called with scanLines=-1 specified, which means to scan the entire file first. The scanLines default value of 256 lines may not scan an entire ASCII text file to determine column types and sizes. Warning: When importData reads an ASCII text file, it needs to scan through some of the file first, to determine the number of data columns, the column types, and the maximum sizes of strings. In an early version of S-PLUS, importData would scan through the first 256 lines to determine this information. This could cause problems if the first few rows contained different types of data than later rows. For example, suppose a particular column in a file only contains integers for the first thousand rows, and then contains arbitrary strings. After scanning the first 256 rows, the column type would be detected as numeric, and imported that way. The latter values that could not be parsed as numbers are read as NA values. To fix this problem, the behavior was changed to scan through the entire file first to determine the column types. This is the safest approach, at the cost of requiring an additional scan of the entire file, slowing down importData. New importData argument: bigdata=F. If bigdata=F (the default), importData returns a data.frame, as in previous versions. If bigdata=T, importData reads the data as a Big Data object, returning a bdFrame. exportData does not need a corresponding argument: It works whether its data argument is a data.frame or a Big Data object. New importData argument: maxLineWidth=0. This argument is an integer giving the maximum line width expected when reading ASCII text files. If a line is read that is longer than this value, an error is signaled. The default of 0, or any number less than 32768 is treated as 32768. New importData argument: na.string="NA". This argument is a character string that is read as a missing value when reading an ASCII text file. No matter what value is specified for this argument, an empty string value is always read as a missing value. New exportData argument: na.string="". This argument is a character string that is written to an ASCII text file to represent a missing value. New importData argument: colTypes=character(0). This argument is a character vector of column types to use for the imported columns (after drop/keep). The following values are supported: "numeric" "character" "factor" "timeDate" Any other values leave the corresponding column unchanged. Therefore, to read the second imported column as a numeric column, one could specify colTypes=c("", "numeric"). Columns whose types are specified as "character" or "factor" will be converted to the specified type, overriding the value of the stringsAsFactors argument for that column. For the most control when importing a column, one should give colTypes with "character" specified for the column, and explicitly manipulate and convert the character values. Change: Default options("time.in.format") changed The default value of options("time.in.format") has been changed from "[%m[/][.]%d[/][,]%y] [%H[:%M[:%S[.%N]]][%p][[(]%3Z[)]]]" to "%m[/][.]%d[/][,]%y [%H[:%M[:%S[.%N]]][%p][[(]%3Z[)]]]" This value is used by default when parsing strings as dates and times in the timeDate function, and when importing ASCII files with importData. The old value caused some problems in importData, where a column of digits could be incorrectly interpreted as a timeDate. With the new default value, a timeDate string has to start with a month, day and year, so it is much less likely to be interpreted incorrectly. As a result of this change, the default format no longer parses strings containing a time without a date, such as "1:45pm". If you must parse strings such as this, you can change the options value, or you can specify it as the in.format= argument to timeDate, or the time.in.format= argument to importData. Change: openData arguments updated to conform to importData and exportData. The openData function has the following new arguments that were added to importData and exportData: scanLines = 256 maxLineWidth = 0 na.string = if( openType=="read") "NA" else "" colTypes = character(0) In addition, openData has several new arguments that were previously available in importData and exportData: separateDelimiters = T time.format = "" The time.format argument acts like the importData time.in.format argument when reading data, and the exportData time.out.format argument when writing data. Change: density has new arguments weights and freq (frequencies). SUPPORTED PLATFORMS AND SYSTEM REQUIREMENTS The 32-bit version of S-PLUS 7 for UNIX/Linux is supported on the following platforms and operating systems. The minimum recommended disk space for installing and running S-PLUS is also included: Platform Operating System Required Disk Space Sun SPARC Solaris 2.8, 2.9 on SPARC processors 340 MB Intel x86/AMD Red Hat Enterprise Linux WS 3.0 340 MB IBM AIX 5.1 or 5.2 on POWER processors 340 MB HP HP-UX 11.0 or 11i on PA-RISC processors 340 MB Note that S-PLUS 7 is not supported on HP Alpha running Tru64, UNIX 4.0F or 5.1A. The minimum RAM required to run S-PLUS from the command line is roughly 60 MB. The Java GUI requires an additional 100 MB. An exception is HP-UX, which uses 300 MB to run S-PLUS with the Java GUI. Note that these values are the minimum requirements; if you work with the Professional Developer version of S-PLUS 7 and moderate sized data sets, these numbers may be insufficient for your needs. Linux Platforms S-PLUS 7 for Unix/Linux is tested and supported on Red Hat Linux WS 3 (Enterprise). The supported release contains the kernel and compiler listed below. Other Linux distributions are not officially supported or tested. However, if you want to use another Linux distribution, you should use one that has similar versions of the kernel and compilers. For more information on various Linux distributions, see http://www.distrowatch.com/. Red Hat OS WS 3 (Enterprise) Kernel 2.4.21 gcc 3.2.3 libc 2.3.2 Java Runtime Environment (JRE) The Java runtime environment (JRE) version 1.4.2 is included in the S-PLUS 7 (JRE version 1.4.1 for HP-UX). Your operating system must support JRE 1.4.2 (JRE version 1.4.1 for HP-UX) in order to run the Java-enabled version of S-PLUS. Note that the JRE provided by S-PLUS is installed as part of the S-PLUS distribution, and under normal circumstances, it is used only by S-PLUS. If you have a different version of the JRE on your system, the JRE used by S-PLUS should not interfere with your other JRE applications, which will continue to use the version you have previously installed. Solaris requirements for the JRE are available from http://java.sun.com/j2se/1.4.2/jre/install-solaris.html These release notes indicate the Java 2 SDK Standard Edition v1.4.2 is supported on Solaris 7, 8, and 9 operating environments. Linux requirements for the JRE are available from http://java.sun.com/j2se/1.4.2/jre/install-linux.html These release notes provide the following recommendations: "Java 2 Runtime Environment v 1.4.2 (J2RE) is supported on i586 Intel and 100% compatible platforms running Linux. For a list of supported operating systems and desktop managers, see System Configurations. A minimum of 32 megabytes of RAM are required. Recommended 48 megabytes of RAM, 16-bit color mode. You should have about 75 megabytes of free disk space before attempting to install the Java 2 Runtime Environment software." The S-PLUS 7 for Linux release uses the kernel and compilers listed above. Other Linux distributions, such as SuSE, are not officially supported or tested. However, if you want to use another Linux distribution, you should use one that has similar versions of the kernel and compilers (e.g., SuSE 9.0 or 9.1). HP-UX requirements for the JRE 1.4.1 are available from: http://www.hp.com/products1/unix/java/java2/sdkrte14/infolibrary/ sdk_rnotes_1.4.1.07.html These release notes provide the following recommendations: "These Release Notes are provided in the software and as a standalone file on this website. The web version has the most up-to-date information regarding defect fixes. For best performance on HP-UX PA-RISC systems: HP server series rp5400, rp7400, rp8400, and Superdome, and PA-based workstations. The recommended minimum system for running Java applications is a PA-RISC 2.0 system. HP-UX 11.0 or 11.11 (11i v1) is required. For all SDK versions 1.4.1.xx, the pthreads patch shown below (or its superseded patch ) must be installed for HP-UX 11.0 or HP-UX 11.11 (11i v1) PA-RISC. HP-UX 11.0 PA-RISC Required patch PHCO_29959 or HP-UX 11.11 (11i v1) PA-RISC Required patch PHCO_29960 HP-UX requires or recommends various patches from HP in order to run Java 1.4. HP users should check the list of recommended and required patches at the following website: http://www.hp.com/products1/unix/java/patches Additional patches are required to run S-PLUS and use the Connect /C++ features on HP-UX. These patches are listed in INSTALL.TXT. To determine which patches have been installed on your machine, log in as root and check your machine with: /usr/sbin/swlist -l product Operating system patches should be installed before you install the SDK." INSTALLING S-PLUS For complete installation instructions, see the document INSTALL.TXT, located at the top level of your S-PLUS 7 CD-ROM. Do NOT install this release over any existing version of S-PLUS. Instead, designate a clean installation directory for S-PLUS 7. Uninstalling S-PLUS From the top-level directory, type rm -rf , where is the S-PLUS directory. USING S-PLUS FOR UNIX FROM A WINDOWS DESKTOP Unix versions of S-PLUS may be accessed remotely from a Windows desktop using X-server software. S-PLUS has been tested with the following products: Exceed (Hummingbird) Reflection X (WRQ) X-Win32 (StarNet) The graphical user interface (GUI) performance of S-PLUS depends upon the X-server software. The performance of the underlying S-PLUS engine is not affected. The following notes describe configurations that have been found to produce the best results. No significant issues were noted. Following are some observations that pertain to X-Win32. When using some versions of X-Win32 to start-up X-applications on your desktop, we have found that the "multiple windows" setting causes some latency in GUI response and some defects in displaying GUI elements. We recommend running in "single window" mode. If you are connecting with XDMCP, then running in "single window" mode should present you with a default window manager from which you may run S-PLUS. If you are connecting with rsh or rexec in "single window" mode, the application may be displayed in a "raw" X-session that lacks a window manager. We recommend that you start the Solaris default window manager (/usr/dt/bin/dtwm) using either the X-Win32 "Command" option, or from an xterm on the Solaris host. Once the window manager has been launched, the S-PLUS application should run and display successfully. GETTING HELP IN S-PLUS The GUI version of S-PLUS 7 for UNIX/Linux uses JavaHelp 2.0 as its main help system. You can use the help.start and help.off functions to turn the help system on and off, respectively, throughout your S-PLUS session. To obtain help on a particular function, use the help or ? functions. The help system contains online help files for all the S-PLUS libraries that are attached at startup; help files for other libraries are available once the libraries are attached. To obtain help for a particular dialog box, click the Help button in that dialog box. For replacement functions such as "dim<-", look for help on the corresponding regular function, such as dim. Look up Arithmetic, Assignment, and Comparison, respectively, for arithmetic, assignment, and comparison operators. The installation notes are available in $SHOME/INSTALL.TXT S-PLUS 7 has four printed manuals: Book Name File name Getting Started with S-PLUS 7 getstart.pdf S-PLUS 7 Enterprise Developer User's Guide (Enterprise Developer edition only) eduserguide.pdf S-PLUS 7 Installation and Administration Guide admin.pdf S-PLUS 7 Function Guide Print only These manuals (except for the S-PLUS 7 Function Guide), along with the following PDF-only manuals are also available as Adobe Acrobat PDF files in $SHOME/doc: Book Name File name S-PLUS 7 Application Developer's Guide adg.pdf S-PLUS 7 Guide to Statistics, Volume 1 statman1.pdf S-PLUS 7 Guide to Statistics, Volume 2 statman2.pdf S-PLUS 7 Programmers Guide pg.pdf S-PLUS 7 Users Guide unixug.pdf CONTACT INFORMATION FOR FEEDBACK We are very interested in receiving information on possible bugs and usability enhancements from all users in this release. Please send any feedback to: bugs@insightful.com General information about this release of S-PLUS is available at: www.insightful.com/support/splus70unix The list of S-PLUS Frequently Asked Questions is available from: http://www.insightful.com/insightful_faq/search.htm