Using R for Time Series in SAS

Here is a great paper on using Time Series in R, and it specifically allows you to use just R output in Base SAS.

SAS Code

/* three methods: */

/* 1. Call R directly – Some errors are not reported to log */

x “’C:\Program Files\R\R-2.12.0\bin\r.exe’–no-save –no-restore <“”&rsourcepath\tsdiag.r””>””&rsourcepath\tsdiag.out”””;

infile “&rsourcepath\tsdiag.out”;

file log;

input;

put ’R LOG: ’ _infile_;

run;

/* include the image in the sas output.Specify a file if you are not using autogenerated html output */

ods html;

data _null_;

file print;

put “<IMG SRC=’” “&rsourcepath\plot.png” “’ border=’0’>”;

put “<IMG SRC=’” “&rsourcepath\acf.png” “’ border=’0’>”;

put “<IMG SRC=’” “&rsourcepath\pacf.png” “’ border=’0’>”;

put “<IMG SRC=’” “&rsourcepath\spect.png” “’ border=’0’>”;

put “<IMG SRC=’” “&rsourcepath\fcst.png” “’ border=’0’>”;

run;

ods html close;

The R code to create a time series plot is quite elegant though-

```
library(tseries)

air <- AirPassengers #Datasetname

ts.plot(air)

acf(air)

pacf(air)

plot(decompose(air))

air.fit <- arima(air,order=c(0,1,1), seasonal=list(order=c(0,1,1), period=12) #The ARIMA Model Based on PACF and ACF Graphs

tsdiag(air.fit)

library(forecast)

air.forecast <- forecast(air.fit)

plot.forecast(air.forecast)

```

You can download the fascinating paper from the Analytics NCSU Website http://analytics.ncsu.edu/sesug/2008/ST-146.pdf

Sam Croker has a MS in Statistics from the University of South Carolina and has over ten years of experience in analytics.   His research interests are in time series analysis and forecasting with focus on stream-flow analysis.  He is currently using SAS, R and other analytical tools for fraud and abuse detection in Medicare and Medicaid data. He also has experience in analyzing, modeling and forecasting in the finance, marketing, hospitality, retail and pharmaceutical industries.

So what's new in R 2.12.0

and as per http://cran.r-project.org/src/base/NEWS

the answer is plenty is new in the newR.

While you and me, were busy writing and reading blogs, or generally writing code for earning more money, or our own research- Uncle Peter D and his band of merry men have been really busy in a much more upgraded R.

————————————–

CHANGES————————-

```NEW FEATURES:

â€¢ Reading a packages's CITATION file now defaults to ASCII rather
than Latin-1: a package with a non-ASCII CITATION file should
declare an encoding in its DESCRIPTION file and use that encoding
for the CITATION file.

â€¢ difftime() now defaults to the "tzone" attribute of "POSIXlt"
objects rather than to the current timezone as set by the default
for the tz argument.  (Wish of PR#14182.)

â€¢ pretty() is now generic, with new methods for "Date" and "POSIXt"
classes (based on code contributed by Felix Andrews).

â€¢ unique() and match() are now faster on character vectors where
all elements are in the global CHARSXP cache and have unmarked
encoding (ASCII).  Thanks to Matthew Dowle for suggesting
improvements to the way the hash code is generated in unique.c.

â€¢ The enquote() utility, in use internally, is exported now.

â€¢ .C() and .Fortran() now map non-zero return values (other than
NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
assumption that they are treated as true.

â€¢ The print() methods for "glm" and "lm" objects now insert
linebreaks in long calls in the same way that the print() methods
for "summary.[g]lm" objects have long done.  This does change the
layout of the examples for a number of packages, e.g. MASS.
(PR#14250)

â€¢ constrOptim() can now be used with method "SANN".  (PR#14245)

It gains an argument hessian to be passed to optim(), which
allows all the ... arguments to be intended for f() and grad().
(PR#14071)

â€¢ curve() now allows expr to be an object of mode "expression" as
well as "call" and "function".

â€¢ The "POSIX[cl]t" methods for Axis() have been replaced by a
single method for "POSIXt".

There are no longer separate plot() methods for "POSIX[cl]t" and
"Date": the default method has been able to handle those classes
for a long time.  This _inter alia_ allows a single date-time
object to be supplied, the wish of PR#14016.

The methods had a different default ("") for xlab.

â€¢ Classes "POSIXct", "POSIXlt" and "difftime" have generators
.POSIXct(), .POSIXlt() and .difftime().  Package authors are
advised to make use of them (they are available from R 2.11.0) to
proof against planned future changes to the classes.

The ordering of the classes has been changed, so "POSIXt" is now
the second class.  See the document â€˜Updating packages for
changes in R 2.12.xâ€™ on  for
the consequences for a handful of CRAN packages.

â€¢ The "POSIXct" method of as.Date() allows a timezone to be
specified (but still defaults to UTC).

â€¢ New list2env() utility function as an inverse of
as.list() and for fast multi-assign() to existing
environment.  as.environment() is now generic and uses list2env()
as list method.

â€¢ There are several small changes to output which â€˜zapâ€™ small
numbers, e.g. in printing quantiles of residuals in summaries
from "lm" and "glm" fits, and in test statisics in print.anova().

â€¢ Special names such as "dim", "names", etc, are now allowed as
slot names of S4 classes, with "class" the only remaining
exception.

â€¢ File .Renviron can have architecture-specific versions such as
.Renviron.i386 on systems with sub-architectures.

â€¢ installed.packages() has a new argument subarch to filter on
sub-architecture.

â€¢ The summary() method for packageStatus() now has a separate
print() method.

â€¢ The default summary() method returns an object inheriting from
class "summaryDefault" which has a separate print() method that
calls zapsmall() for numeric/complex values.

â€¢ The startup message now includes the platform and if used,
sub-architecture: this is useful where different
(sub-)architectures run on the same OS.

â€¢ The getGraphicsEvent() mechanism now allows multiple windows to
return graphics events, through the new functions
setGraphicsEventHandlers(), setGraphicsEventEnv(), and
getGraphicsEventEnv().  (Currently implemented in the windows()
and X11() devices.)

â€¢ tools::texi2dvi() gains an index argument, mainly for use by R
CMD Rd2pdf.

It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
since that does not emulate 'makeindex' well enough to avoid
problems with special characters (such as (, {, !) in indices.

â€¢ The ability of readLines() and scan() to re-encode inputs to
marked UTF-8 strings on Windows since R 2.7.0 is extended to
non-UTF-8 locales on other OSes.

â€¢ scan() gains a fileEncoding argument to match read.table().

â€¢ points() and lines() gain "table" methods to match plot().  (Wish
of PR#10472.)

â€¢ Sys.chmod() allows argument mode to be a vector, recycled along
paths.

â€¢ There are |, & and xor() methods for classes "octmode" and
"hexmode", which work bitwise.

â€¢ Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,
R_PDFLATEXCMD are no longer used nor set in an R session.  (With
the move to tools::texi2dvi(), the conventional environment
variables LATEX, MAKEINDEX and PDFLATEX will be used.
options("dvipscmd") defaults to the value of DVIPS, then to
"dvips".)

â€¢ New function isatty() to see if terminal connections are
redirected.

â€¢ summaryRprof() returns the sampling interval in component
sample.interval and only returns in by.self data for functions
with non-zero self times.

â€¢ print(x) and str(x) now indicate if an empty list x is named.

â€¢ install.packages() and remove.packages() with lib unspecified and
multiple libraries in .libPaths() inform the user of the library
location used with a message rather than a warning.

â€¢ There is limited support for multiple compressed streams on a
file: all of [bgx]zfile() allow streams to be appended to an
existing file, but bzfile() reads only the first stream.

â€¢ Function person() in package utils now uses a given/family scheme
in preference to first/middle/last, is vectorized to handle an
arbitrary number of persons, and gains a role argument to specify
person roles using a controlled vocabulary (the MARC relator
terms).

â€¢ Package utils adds a new "bibentry" class for representing and
manipulating bibliographic information in enhanced BibTeX style,
unifying and enhancing the previously existing mechanisms.

â€¢ A bibstyle() function has been added to the tools package with
default JSS style for rendering "bibentry" objects, and a
mechanism for registering other rendering styles.

â€¢ Several aspects of the display of text help are now customizable
using the new Rd2txt_options() function.
options("help_text_width") is no longer used.

â€¢ Added \href tag to the Rd format, to allow hyperlinks to URLs
without displaying the full URL.

â€¢ Added \newcommand and \renewcommand tags to the Rd format, to
allow user-defined macros.

â€¢ New toRd() generic in the tools package to convert objects to
fragments of Rd code, and added "fragment" argument to Rd2txt(),
Rd2HTML(), and Rd2latex() to support it.

â€¢ Directory R_HOME/share/texmf now follows the TDS conventions, so
can be set as a texmf tree (â€˜root directoryâ€™ in MiKTeX parlance).

â€¢ S3 generic functions now use correct S4 inheritance when
dispatching on an S4 object.  See ?Methods, section on â€œMethods
for S3 Generic Functionsâ€ for recommendations and details.

â€¢ format.pval() gains a ... argument to pass arguments such as
nsmall to format().  (Wish of PR#9574)

â€¢ legend() supports title.adj.  (Wish of PR#13415)

â€¢ Added support for subsetting "raster" objects, plus assigning to
a subset, conversion to a matrix (of colour strings), and
comparisons (== and !=).

â€¢ Added a new parseLatex() function (and related functions
deparseLatex() and latexToUtf8()) to support conversion of
bibliographic entries for display in R.

â€¢ Text rendering of \itemize in help uses a Unicode bullet in UTF-8
and most single-byte Windows locales.

â€¢ Added support for polygons with holes to the graphics engine.
This is implemented for the pdf(), postscript(),
x11(type="cairo"), windows(), and quartz() devices (and
associated raster formats), but not for x11(type="Xlib") or
xfig() or pictex().  The user-level interface is the polypath()
function in graphics and grid.path() in grid.

â€¢ File NEWS is now generated at installation with a slightly
different format: it will be in UTF-8 on platforms using UTF-8,
installed at the top-level of the R distribution.

â€¢ kmeans(x, 1) now works.  Further, kmeans now returns between and
total sum of squares.

â€¢ arrayInd() and which() gain an argument useNames.  For arrayInd,
the default is now false, for speed reasons.

â€¢ As is done for closures, the default print method for the formula
class now displays the associated environment if it is not the
global environment.

â€¢ A new facility has been added for inserting code into a package
without re-installing it, to facilitate testing changes which can
be selectively added and backed out.  See ?insertSource.

~/.Renviron and Renviron.site.

â€¢ require() will now return FALSE (and not fail) if loading the
package or one of its dependencies fails.

â€¢ aperm() now allows argument perm to be a character vector when
the array has named dimnames (as the results of table() calls
do).  Similarly, array() allows MARGIN to be a character vector.
(Based on suggestions of Michael Lachmann.)

â€¢ Package utils now exports and documents functions
aspell_package_Rd_files() and aspell_package_vignettes() for
spell checking package Rd files and vignettes using Aspell,
Ispell or Hunspell.

â€¢ Package news can now be given in Rd format, and news() prefers
these inst/NEWS.Rd files to old-style plain text NEWS or
inst/NEWS files.

â€¢ New simple function packageVersion().

â€¢ The PCRE library has been updated to version 8.10.

â€¢ The standard Unix-alike terminal interface declares its name to
readline as 'R', so that can be used for conditional sections in
~/.inputrc files.

â€¢ â€˜Writing R Extensionsâ€™ now stresses that the standard sections in
.Rd files (other than \alias, \keyword and \note) are intended to
be unique, and the conversion tools now drop duplicates with a
warning.

The .Rd conversion tools also warn about an unrecognized type in
a \docType section.

â€¢ ecdf() objects now have a quantile() method.

â€¢ format() methods for date-time objects now attempt to make use of
a "tzone" attribute with "%Z" and "%z" formats, but it is not
always possible.  (Wish of PR#14358.)

â€¢ tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
where emulation is used and when file is not in the current
directory).

â€¢ New function droplevels() to remove unused factor levels.

â€¢ system(command, intern = TRUE) now gives an error on a Unix-alike
(as well as on Windows) if command cannot be run.  It reports a
non-success exit status from running command as a warning.

On a Unix-alike an attempt is made to return the actual exit
status of the command in system(intern = FALSE): previously this
had been system-dependent but on POSIX-compliant systems the
value return was 256 times the status.

â€¢ system() has a new argument ignore.stdout which can be used to
(portably) ignore standard output.

â€¢ system(intern = TRUE) and pipe() connections are guaranteed to be
avaliable on all builds of R.

â€¢ Sys.which() has been altered to return "" if the command is not
found (even on Solaris).

â€¢ A facility for defining reference-based S4 classes (in the OOP
style of Java, C++, etc.) has been added experimentally to
package methods; see ?ReferenceClasses.

â€¢ The predict method for "loess" fits gains an na.action argument
which defaults to na.pass rather than the previous default of
na.omit.

Predictions from "loess" fits are now named from the row names of
newdata.

â€¢ Parsing errors detected during Sweave() processing will now be
reported referencing their original location in the source file.

â€¢ New adjustcolor() utility, e.g., for simple translucent color
schemes.

â€¢ qr() now has a trivial lm method with a simple (fast) validity
check.

â€¢ An experimental new programming model has been added to package
methods for reference (OOP-style) classes and methods.  See
?ReferenceClasses.

â€¢ bzip2 has been updated to version 1.0.6 (bug-fix release).
--with-system-bzlib now requires at least version 1.0.6.

â€¢ R now provides jss.cls and jss.bst (the class and bib style file
for the Journal of Statistical Software) as well as RJournal.bib
and Rnews.bib, and R CMD ensures that the .bst and .bib files are
found by BibTeX.

â€¢ Functions using the TAR environment variable no longer quote the
value when making system calls.  This allows values such as tar
--force-local, but does require additional quotes in, e.g., TAR =
"'/path with spaces/mytar'".

DEPRECATED & DEFUNCT:

â€¢ Supplying the parser with a character string containing both
octal/hex and Unicode escapes is now an error.

â€¢ File extension .C for C++ code files in packages is now defunct.

â€¢ R CMD check no longer supports configuration files containing
Perl configuration variables: use the environment variables

â€¢ The save argument of require() now defaults to FALSE and save =
TRUE is now deprecated.  (This facility is very rarely actually
used, and was superseded by the Depends field of the DESCRIPTION
file long ago.)

â€¢ R CMD check --no-latex is deprecated in favour of --no-manual.

â€¢ R CMD Sd2Rd is formally deprecated and will be removed in R
2.13.0.

PACKAGE INSTALLATION:

â€¢ install.packages() has a new argument libs_only to optionally
pass --libs-only to R CMD INSTALL and works analogously for
Windows binary installs (to add support for 64- or 32-bit
Windows).

â€¢ When sub-architectures are in use, the installed architectures
are recorded in the Archs field of the DESCRIPTION file.  There
is a new default filter, "subarch", in available.packages() to
make use of this.

Code is compiled in a copy of the src directory when a package is
installed for more than one sub-architecture: this avoid problems
with cleaning the sources between building sub-architectures.

â€¢ R CMD INSTALL --libs-only no longer overrides the setting of
locking, so a previous version of the package will be restored
unless --no-lock is specified.

UTILITIES:

â€¢ R CMD Rprof|build|check are now based on R rather than Perl
scripts.  The only remaining Perl scripts are the deprecated R
CMD Sd2Rd and install-info.pl (used only if install-info is not
found) as well as some maintainer-mode-only scripts.

*NB:* because these have been completely rewritten, users should
not expect undocumented details of previous implementations to
have been duplicated.

R CMD no longer manipulates the environment variables PERL5LIB
and PERLLIB.

â€¢ R CMD check has a new argument --extra-arch to confine tests to
those needed to check an additional sub-architecture.

Its check for â€œSubdirectory 'inst' contains no filesâ€ is more
thorough: it looks for files, and warns if there are only empty
directories.

Environment variables such as R_LIBS and those used for
customization can be set for the duration of checking _via_ a
file ~/.R/check.Renviron (in the format used by .Renviron, and
with sub-architecture specific versions such as
~/.R/check.Renviron.i386 taking precedence).

There are new options --multiarch to check the package under all
of the installed sub-architectures and --no-multiarch to confine
checking to the sub-architecture under which check is invoked.
If neither option is supplied, a test is done of installed
sub-architectures and all those which can be run on the current
OS are used.

Unless multiple sub-architectures are selected, the install done
by check for testing purposes is only of the current
sub-architecture (_via_ R CMD INSTALL --no-multiarch).

It will skip the check for non-ascii characters in code or data
if the environment variables _R_CHECK_ASCII_CODE_ or
_R_CHECK_ASCII_DATA_ are respectively set to FALSE.  (Suggestion
of Vince Carey.)

â€¢ R CMD build no longer creates an INDEX file (R CMD INSTALL does
so), and --force removes (rather than overwrites) an existing
INDEX file.

It supports a file ~/.R/build.Renviron analogously to check.

It now runs build-time \Sexpr expressions in help files.

â€¢ R CMD Rd2dvi makes use of tools::texi2dvi() to process the
package manual.  It is now implemented entirely in R (rather than
partially as a shell script).

â€¢ R CMD Rprof now uses utils::summaryRprof() rather than Perl.  It
has new arguments to select one of the tables and to limit the
number of entries printed.

â€¢ R CMD Sweave now runs R with --vanilla so the environment setting
of R_LIBS will always be used.

C-LEVEL FACILITIES:

â€¢ lang5() and lang6() (in addition to pre-existing lang[1-4]())
convenience functions for easier construction of eval() calls.
If you have your own definition, do wrap it inside #ifndef lang5
.... #endif to keep it working with old and new R.

â€¢ Header R.h now includes only the C headers it itself needs, hence
no longer includes errno.h.  (This helps avoid problems when it
is included from C++ source files.)

â€¢ Headers Rinternals.h and R_ext/Print.h include the C++ versions
of stdio.h and stdarg.h respectively if included from a C++
source file.

INSTALLATION:

â€¢ A C99 compiler is now required, and more C99 language features
will be used in the R sources.

â€¢ Tcl/Tk >= 8.4 is now required (increased from 8.3).

â€¢ System functions access, chdir and getcwd are now essential to
configure R.  (In practice they have been required for some
time.)

â€¢ make check compares the output of the examples from several of
the base packages to reference output rather than the previous
output (if any).  Expect some differences due to differences in
floating-point computations between platforms.

â€¢ File NEWS is no longer in the sources, but generated as part of
the installation.  The primary source for changes is now
doc/NEWS.Rd.

â€¢ The popen system call is now required to build R.  This ensures
the availability of system(intern = TRUE), pipe() connections and
printing from postscript().

â€¢ The pkg-config file libR.pc now also works when R is installed
using a sub-architecture.

â€¢ R has always required a BLAS that conforms to IE60559 arithmetic,
but after discovery of more real-world problems caused by a BLAS
that did not, this is tested more thoroughly in this version.

BUG FIXES:

â€¢ Calls to selectMethod() by default no longer cache inherited
methods.  This could previously corrupt methods used by as().

â€¢ The densities of non-central chi-squared are now more accurate in
some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
series expansion was truncated too early.  (PR#14105)

â€¢ pt() is more accurate in the left tail for ncp large, e.g.
pt(-1000, 3, 200).  (PR#14069)

â€¢ The default C function (R_binary) for binary ops now sets the S4
bit in the result if either argument is an S4 object.  (PR#13209)

â€¢ source(echo=TRUE) failed to echo comments that followed the last
statement in a file.

â€¢ S4 classes that contained one of "matrix", "array" or "ts" and
also another class now accept superclass objects in new().  Also
fixes failure to call validObject() for these classes.

â€¢ Conditional inheritance defined by argument test in
methods::setIs() will no longer be used in S4 method selection
(caching these methods could give incorrect results).  See
?setIs.

â€¢ The signature of an implicit generic is now used by setGeneric()
when that does not use a definition nor explicitly set a
signature.

â€¢ A bug in callNextMethod() for some examples with "..." in the
arguments has been fixed.  See file
src/library/methods/tests/nextWithDots.R in the sources.

â€¢ match(x, table) (and hence %in%) now treat "POSIXlt" consistently
with, e.g., "POSIXct".

â€¢ Built-in code dealing with environments (get(), assign(),
parent.env(), is.environment() and others) now behave
consistently to recognize S4 subclasses; is.name() also
recognizes subclasses.

â€¢ The abs.tol control parameter to nlminb() now defaults to 0.0 to
avoid false declarations of convergence in objective functions
that may go negative.

â€¢ The standard Unix-alike termination dialog to ask whether to save
the workspace takes a EOF response as n to avoid problems with a
damaged terminal connection.  (PR#14332)

â€¢ Added warn.unused argument to hist.default() to allow suppression
of spurious warnings about graphical parameters used with
plot=FALSE.  (PR#14341)

â€¢ predict.lm(), summary.lm(), and indeed lm() itself had issues
with residual DF in zero-weighted cases (the latter two only in
connection with empty models). (Thanks to Bill Dunlap for
spotting the predict() case.)

â€¢ aperm() treated resize = NA as resize = TRUE.

â€¢ constrOptim() now has an improved convergence criterion, notably
for cases where the minimum was (very close to) zero; further,
other tweaks inspired from code proposals by Ravi Varadhan.

â€¢ Rendering of S3 and S4 methods in man pages has been corrected
and made consistent across output formats.

â€¢ Simple markup is now allowed in \title sections in .Rd files.

â€¢ The behaviour of as.logical() on factors (to use the levels) was
lost in R 2.6.0 and has been restored.

â€¢ prompt() did not backquote some default arguments in the \usage
section.  (Reported by Claudia Beleites.)

â€¢ writeBin() disallows attempts to write 2GB or more in a single
call. (PR#14362)

â€¢ new() and getClass() will now work if Class is a subclass of
"classRepresentation" and should also be faster in typical calls.

â€¢ The summary() method for data frames makes a better job of names
containing characters invalid in the current locale.

â€¢ [[ sub-assignment for factors could create an invalid factor
(reported by Bill Dunlap).

â€¢ Negate(f) would not evaluate argument f until first use of
returned function (reported by Olaf Mersmann).

â€¢ quietly=FALSE is now also an optional argument of library(), and
dependent packages, e.g., in require(*, quietly=TRUE).

â€¢ If the loop variable in a for loop was deleted, it would be
recreated as a global variable.  (Reported by Radford Neal; the
fix includes his optimizations as well.)

involved parsing new code. (PR#14368)

â€¢ getNamespaceVersion() failed; this was an accidental change in
2.11.0. (PR#14374)

â€¢ identical() returned FALSE for external pointer objects even when
the pointer addresses were the same.

â€¢ L\$a@x[] <- val did not duplicate in a case it should have.

â€¢ tempfile() now always gives a random file name (even if the
directory is specified) when called directly after startup and
before the R RNG had been used.  (PR#14381)

â€¢ quantile(type=6) behaved inconsistently.  (PR#14383)

â€¢ backSpline(.) behaved incorrectly when the knot sequence was
decreasing.  (PR#14386)

â€¢ The reference BLAS included in R was assuming that 0*x and x*0
were always zero (whereas they could be NA or NaN in IEC 60559
arithmetic).  This was seen in results from tcrossprod, and for
example that log(0) %*% 0 gave 0.

â€¢ The calculation of whether text was completely outside the device
region (in which case, you draw nothing) was wrong for screen
devices (which have [0, 0] at top-left).  The symptom was (long)
text disappearing when resizing a screen window (to make it
smaller).  (PR#14391)

â€¢ model.frame(drop.unused.levels = TRUE) did not take into account
NA values of factors when deciding to drop levels. (PR#14393)

â€¢ library.dynam.unload required an absolute path for libpath.
(PR#14385)

Both library() and loadNamespace() now record absolute paths for
use by searchpaths() and getNamespaceInfo(ns, "path").

â€¢ The self-starting model NLSstClosestX failed if some deviation
was exactly zero.  (PR#14384)

â€¢ X11(type = "cairo") (and other devices such as png using
cairographics) and which use Pango font selection now work around
a bug in Pango when very small fonts (those with sizes between 0
and 1 in Pango's internal units) are requested.  (PR#14369)

â€¢ Added workaround for the font problem with X11(type = "cairo")
and similar on Mac OS X whereby italic and bold styles were
interchanged.  (PR#13463 amongst many other reports.)

â€¢ source(chdir = TRUE) failed to reset the working directory if it
could not be determined - that is now an error.

â€¢ Fix for crash of example(rasterImage) on x11(type="Xlib").

â€¢ Force Quartz to bring the on-screen display up-to-date
immediately before the snapshot is taken by grid.cap() in the
Cocoa implementation. (PR#14260)

â€¢ model.frame had an unstated 500 byte limit on variable names.
(Example reported by Terry Therneau.)

â€¢ The 256-byte limit on names is now documented.    â€¢ Subassignment by [, [[ or \$ on an expression object with value
NULL coerced the object to a list.```

So what’s new in R 2.12.0

and as per http://cran.r-project.org/src/base/NEWS

the answer is plenty is new in the newR.

While you and me, were busy writing and reading blogs, or generally writing code for earning more money, or our own research- Uncle Peter D and his band of merry men have been really busy in a much more upgraded R.

————————————–

CHANGES————————-

```NEW FEATURES:

â€¢ Reading a packages's CITATION file now defaults to ASCII rather
than Latin-1: a package with a non-ASCII CITATION file should
declare an encoding in its DESCRIPTION file and use that encoding
for the CITATION file.

â€¢ difftime() now defaults to the "tzone" attribute of "POSIXlt"
objects rather than to the current timezone as set by the default
for the tz argument.  (Wish of PR#14182.)

â€¢ pretty() is now generic, with new methods for "Date" and "POSIXt"
classes (based on code contributed by Felix Andrews).

â€¢ unique() and match() are now faster on character vectors where
all elements are in the global CHARSXP cache and have unmarked
encoding (ASCII).  Thanks to Matthew Dowle for suggesting
improvements to the way the hash code is generated in unique.c.

â€¢ The enquote() utility, in use internally, is exported now.

â€¢ .C() and .Fortran() now map non-zero return values (other than
NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
assumption that they are treated as true.

â€¢ The print() methods for "glm" and "lm" objects now insert
linebreaks in long calls in the same way that the print() methods
for "summary.[g]lm" objects have long done.  This does change the
layout of the examples for a number of packages, e.g. MASS.
(PR#14250)

â€¢ constrOptim() can now be used with method "SANN".  (PR#14245)

It gains an argument hessian to be passed to optim(), which
allows all the ... arguments to be intended for f() and grad().
(PR#14071)

â€¢ curve() now allows expr to be an object of mode "expression" as
well as "call" and "function".

â€¢ The "POSIX[cl]t" methods for Axis() have been replaced by a
single method for "POSIXt".

There are no longer separate plot() methods for "POSIX[cl]t" and
"Date": the default method has been able to handle those classes
for a long time.  This _inter alia_ allows a single date-time
object to be supplied, the wish of PR#14016.

The methods had a different default ("") for xlab.

â€¢ Classes "POSIXct", "POSIXlt" and "difftime" have generators
.POSIXct(), .POSIXlt() and .difftime().  Package authors are
advised to make use of them (they are available from R 2.11.0) to
proof against planned future changes to the classes.

The ordering of the classes has been changed, so "POSIXt" is now
the second class.  See the document â€˜Updating packages for
changes in R 2.12.xâ€™ on  for
the consequences for a handful of CRAN packages.

â€¢ The "POSIXct" method of as.Date() allows a timezone to be
specified (but still defaults to UTC).

â€¢ New list2env() utility function as an inverse of
as.list() and for fast multi-assign() to existing
environment.  as.environment() is now generic and uses list2env()
as list method.

â€¢ There are several small changes to output which â€˜zapâ€™ small
numbers, e.g. in printing quantiles of residuals in summaries
from "lm" and "glm" fits, and in test statisics in print.anova().

â€¢ Special names such as "dim", "names", etc, are now allowed as
slot names of S4 classes, with "class" the only remaining
exception.

â€¢ File .Renviron can have architecture-specific versions such as
.Renviron.i386 on systems with sub-architectures.

â€¢ installed.packages() has a new argument subarch to filter on
sub-architecture.

â€¢ The summary() method for packageStatus() now has a separate
print() method.

â€¢ The default summary() method returns an object inheriting from
class "summaryDefault" which has a separate print() method that
calls zapsmall() for numeric/complex values.

â€¢ The startup message now includes the platform and if used,
sub-architecture: this is useful where different
(sub-)architectures run on the same OS.

â€¢ The getGraphicsEvent() mechanism now allows multiple windows to
return graphics events, through the new functions
setGraphicsEventHandlers(), setGraphicsEventEnv(), and
getGraphicsEventEnv().  (Currently implemented in the windows()
and X11() devices.)

â€¢ tools::texi2dvi() gains an index argument, mainly for use by R
CMD Rd2pdf.

It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
since that does not emulate 'makeindex' well enough to avoid
problems with special characters (such as (, {, !) in indices.

â€¢ The ability of readLines() and scan() to re-encode inputs to
marked UTF-8 strings on Windows since R 2.7.0 is extended to
non-UTF-8 locales on other OSes.

â€¢ scan() gains a fileEncoding argument to match read.table().

â€¢ points() and lines() gain "table" methods to match plot().  (Wish
of PR#10472.)

â€¢ Sys.chmod() allows argument mode to be a vector, recycled along
paths.

â€¢ There are |, & and xor() methods for classes "octmode" and
"hexmode", which work bitwise.

â€¢ Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,
R_PDFLATEXCMD are no longer used nor set in an R session.  (With
the move to tools::texi2dvi(), the conventional environment
variables LATEX, MAKEINDEX and PDFLATEX will be used.
options("dvipscmd") defaults to the value of DVIPS, then to
"dvips".)

â€¢ New function isatty() to see if terminal connections are
redirected.

â€¢ summaryRprof() returns the sampling interval in component
sample.interval and only returns in by.self data for functions
with non-zero self times.

â€¢ print(x) and str(x) now indicate if an empty list x is named.

â€¢ install.packages() and remove.packages() with lib unspecified and
multiple libraries in .libPaths() inform the user of the library
location used with a message rather than a warning.

â€¢ There is limited support for multiple compressed streams on a
file: all of [bgx]zfile() allow streams to be appended to an
existing file, but bzfile() reads only the first stream.

â€¢ Function person() in package utils now uses a given/family scheme
in preference to first/middle/last, is vectorized to handle an
arbitrary number of persons, and gains a role argument to specify
person roles using a controlled vocabulary (the MARC relator
terms).

â€¢ Package utils adds a new "bibentry" class for representing and
manipulating bibliographic information in enhanced BibTeX style,
unifying and enhancing the previously existing mechanisms.

â€¢ A bibstyle() function has been added to the tools package with
default JSS style for rendering "bibentry" objects, and a
mechanism for registering other rendering styles.

â€¢ Several aspects of the display of text help are now customizable
using the new Rd2txt_options() function.
options("help_text_width") is no longer used.

â€¢ Added \href tag to the Rd format, to allow hyperlinks to URLs
without displaying the full URL.

â€¢ Added \newcommand and \renewcommand tags to the Rd format, to
allow user-defined macros.

â€¢ New toRd() generic in the tools package to convert objects to
fragments of Rd code, and added "fragment" argument to Rd2txt(),
Rd2HTML(), and Rd2latex() to support it.

â€¢ Directory R_HOME/share/texmf now follows the TDS conventions, so
can be set as a texmf tree (â€˜root directoryâ€™ in MiKTeX parlance).

â€¢ S3 generic functions now use correct S4 inheritance when
dispatching on an S4 object.  See ?Methods, section on â€œMethods
for S3 Generic Functionsâ€ for recommendations and details.

â€¢ format.pval() gains a ... argument to pass arguments such as
nsmall to format().  (Wish of PR#9574)

â€¢ legend() supports title.adj.  (Wish of PR#13415)

â€¢ Added support for subsetting "raster" objects, plus assigning to
a subset, conversion to a matrix (of colour strings), and
comparisons (== and !=).

â€¢ Added a new parseLatex() function (and related functions
deparseLatex() and latexToUtf8()) to support conversion of
bibliographic entries for display in R.

â€¢ Text rendering of \itemize in help uses a Unicode bullet in UTF-8
and most single-byte Windows locales.

â€¢ Added support for polygons with holes to the graphics engine.
This is implemented for the pdf(), postscript(),
x11(type="cairo"), windows(), and quartz() devices (and
associated raster formats), but not for x11(type="Xlib") or
xfig() or pictex().  The user-level interface is the polypath()
function in graphics and grid.path() in grid.

â€¢ File NEWS is now generated at installation with a slightly
different format: it will be in UTF-8 on platforms using UTF-8,
installed at the top-level of the R distribution.

â€¢ kmeans(x, 1) now works.  Further, kmeans now returns between and
total sum of squares.

â€¢ arrayInd() and which() gain an argument useNames.  For arrayInd,
the default is now false, for speed reasons.

â€¢ As is done for closures, the default print method for the formula
class now displays the associated environment if it is not the
global environment.

â€¢ A new facility has been added for inserting code into a package
without re-installing it, to facilitate testing changes which can
be selectively added and backed out.  See ?insertSource.

~/.Renviron and Renviron.site.

â€¢ require() will now return FALSE (and not fail) if loading the
package or one of its dependencies fails.

â€¢ aperm() now allows argument perm to be a character vector when
the array has named dimnames (as the results of table() calls
do).  Similarly, array() allows MARGIN to be a character vector.
(Based on suggestions of Michael Lachmann.)

â€¢ Package utils now exports and documents functions
aspell_package_Rd_files() and aspell_package_vignettes() for
spell checking package Rd files and vignettes using Aspell,
Ispell or Hunspell.

â€¢ Package news can now be given in Rd format, and news() prefers
these inst/NEWS.Rd files to old-style plain text NEWS or
inst/NEWS files.

â€¢ New simple function packageVersion().

â€¢ The PCRE library has been updated to version 8.10.

â€¢ The standard Unix-alike terminal interface declares its name to
readline as 'R', so that can be used for conditional sections in
~/.inputrc files.

â€¢ â€˜Writing R Extensionsâ€™ now stresses that the standard sections in
.Rd files (other than \alias, \keyword and \note) are intended to
be unique, and the conversion tools now drop duplicates with a
warning.

The .Rd conversion tools also warn about an unrecognized type in
a \docType section.

â€¢ ecdf() objects now have a quantile() method.

â€¢ format() methods for date-time objects now attempt to make use of
a "tzone" attribute with "%Z" and "%z" formats, but it is not
always possible.  (Wish of PR#14358.)

â€¢ tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
where emulation is used and when file is not in the current
directory).

â€¢ New function droplevels() to remove unused factor levels.

â€¢ system(command, intern = TRUE) now gives an error on a Unix-alike
(as well as on Windows) if command cannot be run.  It reports a
non-success exit status from running command as a warning.

On a Unix-alike an attempt is made to return the actual exit
status of the command in system(intern = FALSE): previously this
had been system-dependent but on POSIX-compliant systems the
value return was 256 times the status.

â€¢ system() has a new argument ignore.stdout which can be used to
(portably) ignore standard output.

â€¢ system(intern = TRUE) and pipe() connections are guaranteed to be
avaliable on all builds of R.

â€¢ Sys.which() has been altered to return "" if the command is not
found (even on Solaris).

â€¢ A facility for defining reference-based S4 classes (in the OOP
style of Java, C++, etc.) has been added experimentally to
package methods; see ?ReferenceClasses.

â€¢ The predict method for "loess" fits gains an na.action argument
which defaults to na.pass rather than the previous default of
na.omit.

Predictions from "loess" fits are now named from the row names of
newdata.

â€¢ Parsing errors detected during Sweave() processing will now be
reported referencing their original location in the source file.

â€¢ New adjustcolor() utility, e.g., for simple translucent color
schemes.

â€¢ qr() now has a trivial lm method with a simple (fast) validity
check.

â€¢ An experimental new programming model has been added to package
methods for reference (OOP-style) classes and methods.  See
?ReferenceClasses.

â€¢ bzip2 has been updated to version 1.0.6 (bug-fix release).
--with-system-bzlib now requires at least version 1.0.6.

â€¢ R now provides jss.cls and jss.bst (the class and bib style file
for the Journal of Statistical Software) as well as RJournal.bib
and Rnews.bib, and R CMD ensures that the .bst and .bib files are
found by BibTeX.

â€¢ Functions using the TAR environment variable no longer quote the
value when making system calls.  This allows values such as tar
--force-local, but does require additional quotes in, e.g., TAR =
"'/path with spaces/mytar'".

DEPRECATED & DEFUNCT:

â€¢ Supplying the parser with a character string containing both
octal/hex and Unicode escapes is now an error.

â€¢ File extension .C for C++ code files in packages is now defunct.

â€¢ R CMD check no longer supports configuration files containing
Perl configuration variables: use the environment variables

â€¢ The save argument of require() now defaults to FALSE and save =
TRUE is now deprecated.  (This facility is very rarely actually
used, and was superseded by the Depends field of the DESCRIPTION
file long ago.)

â€¢ R CMD check --no-latex is deprecated in favour of --no-manual.

â€¢ R CMD Sd2Rd is formally deprecated and will be removed in R
2.13.0.

PACKAGE INSTALLATION:

â€¢ install.packages() has a new argument libs_only to optionally
pass --libs-only to R CMD INSTALL and works analogously for
Windows binary installs (to add support for 64- or 32-bit
Windows).

â€¢ When sub-architectures are in use, the installed architectures
are recorded in the Archs field of the DESCRIPTION file.  There
is a new default filter, "subarch", in available.packages() to
make use of this.

Code is compiled in a copy of the src directory when a package is
installed for more than one sub-architecture: this avoid problems
with cleaning the sources between building sub-architectures.

â€¢ R CMD INSTALL --libs-only no longer overrides the setting of
locking, so a previous version of the package will be restored
unless --no-lock is specified.

UTILITIES:

â€¢ R CMD Rprof|build|check are now based on R rather than Perl
scripts.  The only remaining Perl scripts are the deprecated R
CMD Sd2Rd and install-info.pl (used only if install-info is not
found) as well as some maintainer-mode-only scripts.

*NB:* because these have been completely rewritten, users should
not expect undocumented details of previous implementations to
have been duplicated.

R CMD no longer manipulates the environment variables PERL5LIB
and PERLLIB.

â€¢ R CMD check has a new argument --extra-arch to confine tests to
those needed to check an additional sub-architecture.

Its check for â€œSubdirectory 'inst' contains no filesâ€ is more
thorough: it looks for files, and warns if there are only empty
directories.

Environment variables such as R_LIBS and those used for
customization can be set for the duration of checking _via_ a
file ~/.R/check.Renviron (in the format used by .Renviron, and
with sub-architecture specific versions such as
~/.R/check.Renviron.i386 taking precedence).

There are new options --multiarch to check the package under all
of the installed sub-architectures and --no-multiarch to confine
checking to the sub-architecture under which check is invoked.
If neither option is supplied, a test is done of installed
sub-architectures and all those which can be run on the current
OS are used.

Unless multiple sub-architectures are selected, the install done
by check for testing purposes is only of the current
sub-architecture (_via_ R CMD INSTALL --no-multiarch).

It will skip the check for non-ascii characters in code or data
if the environment variables _R_CHECK_ASCII_CODE_ or
_R_CHECK_ASCII_DATA_ are respectively set to FALSE.  (Suggestion
of Vince Carey.)

â€¢ R CMD build no longer creates an INDEX file (R CMD INSTALL does
so), and --force removes (rather than overwrites) an existing
INDEX file.

It supports a file ~/.R/build.Renviron analogously to check.

It now runs build-time \Sexpr expressions in help files.

â€¢ R CMD Rd2dvi makes use of tools::texi2dvi() to process the
package manual.  It is now implemented entirely in R (rather than
partially as a shell script).

â€¢ R CMD Rprof now uses utils::summaryRprof() rather than Perl.  It
has new arguments to select one of the tables and to limit the
number of entries printed.

â€¢ R CMD Sweave now runs R with --vanilla so the environment setting
of R_LIBS will always be used.

C-LEVEL FACILITIES:

â€¢ lang5() and lang6() (in addition to pre-existing lang[1-4]())
convenience functions for easier construction of eval() calls.
If you have your own definition, do wrap it inside #ifndef lang5
.... #endif to keep it working with old and new R.

â€¢ Header R.h now includes only the C headers it itself needs, hence
no longer includes errno.h.  (This helps avoid problems when it
is included from C++ source files.)

â€¢ Headers Rinternals.h and R_ext/Print.h include the C++ versions
of stdio.h and stdarg.h respectively if included from a C++
source file.

INSTALLATION:

â€¢ A C99 compiler is now required, and more C99 language features
will be used in the R sources.

â€¢ Tcl/Tk >= 8.4 is now required (increased from 8.3).

â€¢ System functions access, chdir and getcwd are now essential to
configure R.  (In practice they have been required for some
time.)

â€¢ make check compares the output of the examples from several of
the base packages to reference output rather than the previous
output (if any).  Expect some differences due to differences in
floating-point computations between platforms.

â€¢ File NEWS is no longer in the sources, but generated as part of
the installation.  The primary source for changes is now
doc/NEWS.Rd.

â€¢ The popen system call is now required to build R.  This ensures
the availability of system(intern = TRUE), pipe() connections and
printing from postscript().

â€¢ The pkg-config file libR.pc now also works when R is installed
using a sub-architecture.

â€¢ R has always required a BLAS that conforms to IE60559 arithmetic,
but after discovery of more real-world problems caused by a BLAS
that did not, this is tested more thoroughly in this version.

BUG FIXES:

â€¢ Calls to selectMethod() by default no longer cache inherited
methods.  This could previously corrupt methods used by as().

â€¢ The densities of non-central chi-squared are now more accurate in
some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
series expansion was truncated too early.  (PR#14105)

â€¢ pt() is more accurate in the left tail for ncp large, e.g.
pt(-1000, 3, 200).  (PR#14069)

â€¢ The default C function (R_binary) for binary ops now sets the S4
bit in the result if either argument is an S4 object.  (PR#13209)

â€¢ source(echo=TRUE) failed to echo comments that followed the last
statement in a file.

â€¢ S4 classes that contained one of "matrix", "array" or "ts" and
also another class now accept superclass objects in new().  Also
fixes failure to call validObject() for these classes.

â€¢ Conditional inheritance defined by argument test in
methods::setIs() will no longer be used in S4 method selection
(caching these methods could give incorrect results).  See
?setIs.

â€¢ The signature of an implicit generic is now used by setGeneric()
when that does not use a definition nor explicitly set a
signature.

â€¢ A bug in callNextMethod() for some examples with "..." in the
arguments has been fixed.  See file
src/library/methods/tests/nextWithDots.R in the sources.

â€¢ match(x, table) (and hence %in%) now treat "POSIXlt" consistently
with, e.g., "POSIXct".

â€¢ Built-in code dealing with environments (get(), assign(),
parent.env(), is.environment() and others) now behave
consistently to recognize S4 subclasses; is.name() also
recognizes subclasses.

â€¢ The abs.tol control parameter to nlminb() now defaults to 0.0 to
avoid false declarations of convergence in objective functions
that may go negative.

â€¢ The standard Unix-alike termination dialog to ask whether to save
the workspace takes a EOF response as n to avoid problems with a
damaged terminal connection.  (PR#14332)

â€¢ Added warn.unused argument to hist.default() to allow suppression
of spurious warnings about graphical parameters used with
plot=FALSE.  (PR#14341)

â€¢ predict.lm(), summary.lm(), and indeed lm() itself had issues
with residual DF in zero-weighted cases (the latter two only in
connection with empty models). (Thanks to Bill Dunlap for
spotting the predict() case.)

â€¢ aperm() treated resize = NA as resize = TRUE.

â€¢ constrOptim() now has an improved convergence criterion, notably
for cases where the minimum was (very close to) zero; further,
other tweaks inspired from code proposals by Ravi Varadhan.

â€¢ Rendering of S3 and S4 methods in man pages has been corrected
and made consistent across output formats.

â€¢ Simple markup is now allowed in \title sections in .Rd files.

â€¢ The behaviour of as.logical() on factors (to use the levels) was
lost in R 2.6.0 and has been restored.

â€¢ prompt() did not backquote some default arguments in the \usage
section.  (Reported by Claudia Beleites.)

â€¢ writeBin() disallows attempts to write 2GB or more in a single
call. (PR#14362)

â€¢ new() and getClass() will now work if Class is a subclass of
"classRepresentation" and should also be faster in typical calls.

â€¢ The summary() method for data frames makes a better job of names
containing characters invalid in the current locale.

â€¢ [[ sub-assignment for factors could create an invalid factor
(reported by Bill Dunlap).

â€¢ Negate(f) would not evaluate argument f until first use of
returned function (reported by Olaf Mersmann).

â€¢ quietly=FALSE is now also an optional argument of library(), and
dependent packages, e.g., in require(*, quietly=TRUE).

â€¢ If the loop variable in a for loop was deleted, it would be
recreated as a global variable.  (Reported by Radford Neal; the
fix includes his optimizations as well.)

involved parsing new code. (PR#14368)

â€¢ getNamespaceVersion() failed; this was an accidental change in
2.11.0. (PR#14374)

â€¢ identical() returned FALSE for external pointer objects even when
the pointer addresses were the same.

â€¢ L\$a@x[] <- val did not duplicate in a case it should have.

â€¢ tempfile() now always gives a random file name (even if the
directory is specified) when called directly after startup and
before the R RNG had been used.  (PR#14381)

â€¢ quantile(type=6) behaved inconsistently.  (PR#14383)

â€¢ backSpline(.) behaved incorrectly when the knot sequence was
decreasing.  (PR#14386)

â€¢ The reference BLAS included in R was assuming that 0*x and x*0
were always zero (whereas they could be NA or NaN in IEC 60559
arithmetic).  This was seen in results from tcrossprod, and for
example that log(0) %*% 0 gave 0.

â€¢ The calculation of whether text was completely outside the device
region (in which case, you draw nothing) was wrong for screen
devices (which have [0, 0] at top-left).  The symptom was (long)
text disappearing when resizing a screen window (to make it
smaller).  (PR#14391)

â€¢ model.frame(drop.unused.levels = TRUE) did not take into account
NA values of factors when deciding to drop levels. (PR#14393)

â€¢ library.dynam.unload required an absolute path for libpath.
(PR#14385)

Both library() and loadNamespace() now record absolute paths for
use by searchpaths() and getNamespaceInfo(ns, "path").

â€¢ The self-starting model NLSstClosestX failed if some deviation
was exactly zero.  (PR#14384)

â€¢ X11(type = "cairo") (and other devices such as png using
cairographics) and which use Pango font selection now work around
a bug in Pango when very small fonts (those with sizes between 0
and 1 in Pango's internal units) are requested.  (PR#14369)

â€¢ Added workaround for the font problem with X11(type = "cairo")
and similar on Mac OS X whereby italic and bold styles were
interchanged.  (PR#13463 amongst many other reports.)

â€¢ source(chdir = TRUE) failed to reset the working directory if it
could not be determined - that is now an error.

â€¢ Fix for crash of example(rasterImage) on x11(type="Xlib").

â€¢ Force Quartz to bring the on-screen display up-to-date
immediately before the snapshot is taken by grid.cap() in the
Cocoa implementation. (PR#14260)

â€¢ model.frame had an unstated 500 byte limit on variable names.
(Example reported by Terry Therneau.)

â€¢ The 256-byte limit on names is now documented.    â€¢ Subassignment by [, [[ or \$ on an expression object with value
NULL coerced the object to a list.```

LibreOffice Beta 2 (Office Fork off Oracle) launches!

Announcement from Code Ninjas at Document Foundation

10 years after the StarOffice code has been opened as OpenOffice.org, The Document Foundation is proud to announce the availability of LibreOffice Beta 2 for public testing. Please, download the suitable package(s) from

install them, and start testing! Should you find bugs, please report them to the FreeDesktop Bugzilla:

https://bugs.freedesktop.org

If you want to get involved in this exciting project, you can contribute code:

http://www.documentfoundation.org/develop/

http://www.freedesktop.org/wiki/Software/LibreOffice/i18n/translating_3.3

or just donate:

http://www.documentfoundation.org/contribution/
A list of known issues with Beta 2 is available in our wiki:

http://wiki.documentfoundation.org/Beta2

Beta Release Notes

This beta release is not intended for production use!

There are a number of known issues being worked on:

• The Windows build is an International build – you can choose the user interface language that is suitable for you, but the help is always English. We are currently working on improving the delivery mechanism to be able to provide you with the localized help. We are also working on smaller problems like wrong description of several languages.
• The Linux and MacOSX builds are English builds with the possibility to install language packs. Please browse the archives to get the langugage pack you need for your platform.
• The LibreOffice branding and renaming is new and work in progress. You may still see old graphics, icons or websites. So please bear with us. This also applies to the BrOffice.org branding – applicable in Brazil.
• Filters for the legacy StarOffice binary formats are missing.

I tested it- it seems okay enough. Once again Open Source tends to underplay expectations (when was the last time you saw that in enterprise software?)

When China overtook India- using DEDUCER

I was just reading about the new release of World Bank Data at http://www.r-chart.com/2010/09/new-world-bank-data-available.html Now World Bank Data is something I worked with in the past, but the RWDI package is a great package. (see http://www.r-chart.com/2010/09/new-world-bank-data-available.html)

The whole dataset is a 29 mb in zipped CSV though and is available for terrific macroeconomic analysis _ I downloaded it and loaded it instead.

http://data.worldbank.org/sites/default/files/data/wdiandgdf_csv.zip

I took a small subset of the data –

```
WDI_GDF_Data.sub<-subset(WDI_GDF_Data,Country.Code == "CHN" | Country.Code == "IND" | Country.Code == "USA")
WDI_GDF_Data.sub.sub<-subset(WDI_GDF_Data.sub,Series.Code == "NY.GDP.PCAP.KD")
WDI_GDF_Data.sub.sub<-as.data.frame(t(WDI_GDF_Data.sub.sub))
write.csv(WDI_GDF_Data.sub.sub,'C:/Documents and Settings/abc/Desktop/gdp3.csv')
```

Note- WordPress.com now supports source code in R via http://en.support.wordpress.com/code/posting-source-code/

Now this is basic data manipulation- and I used Deducer for it.

The best thing is the ability to use GGPlot using a GUI.
I am now trying to create more complicated plots for example with more than one Y variable but it is still a work in progress. Overall Deducer has made impressive improvements and with the JGR GUI seems very very promising. The look and feel also shows a combination of features (from SPSS ‘s variable and data view)

And yes China overtook India in 1985. In GDP per capita. Sigh

GGPLot though overtook Excel graphics as well.

Here is a video which is much better than my screenshots

Making NeW R

Tal G in his excellent blog piece talks of “Why R Developers  should not be paid” http://www.r-statistics.com/2010/09/open-source-and-money-why-r-developers-shouldnt-be-paid/

His argument of love is not very original though it was first made by these four guys

I am going to argue that “some” R developers should be paid, while the main focus should be volunteers code. These R developers should be paid as per usage of their packages.

Let me expand.

Imagine the following conversation between Ross Ihaka, Norman Nie and Peter Dalgaard.

Norman- Hey Guys, Can you give me some code- I got this new startup.

Ross Ihaka and Peter Dalgaard- Sure dude. Here is 100,000 lines of code, 2000 packages and 2 decades of effort.

Norman- Thanks guys.

Ross Ihaka- Hey, What you gonna do with this code.

Norman- I will better it. Sell it. Finally beat Jim Goodnight and his **** Proc GLM and **** Proc Reg.

Ross- Okay, but what will you give us? Will you give us some code back of what you improve?

Norman – Uh, let me explain this open core …

Peter D- Well how about some royalty?

Norman- Sure, we will throw parties at all conferences, snacks you know at user groups.

Ross – Hmm. That does not sound fair. (walks away in a huff muttering)-He takes our code, sells it and wont share the code

Peter D- Doesnt sound fair. I am back to reading Hamlet, the great Dane, and writing the next edition of my book. I am glad I wrote a book- Ross didnt even write that.

Norman-Uh Oh. (picks his phone)- Hey David Smith, We need to write some blog articles pronto – these open source guys ,man…

———–I think that sums what has been going on in the dynamics of R recently. If Ross Ihaka and R Gentleman had adopted an open core strategy- meaning you can create packages to R but not share the original where would we all be?

At this point if he is reading this, David Smith , long suffering veteran of open source  flameouts is rolling his eyes while Tal G is wondering if he will publish this on R Bloggers and if so when or something.

Lets bring in another R veteran-  Hadley Wickham who wrote a book on R and also created ggplot. Thats the best quality, most often used graphics package.

In terms of economic utilty to end user- the ggplot package may be as useful if not more as the foreach package developed by Revolution Computing/Analytics.

However lets come to open core licensing ( read it here http://alampitt.typepad.com/lampitt_or_leave_it/2008/08/open-core-licen.html ) which is where the debate is- Revolution takes code- enhances it (in my opinion) substantially with new formats XDF for better efficieny, web services API, and soon coming next year a GUI (thanks in advance , Dr Nie and guys)

and sells this advanced R code to businesses happy to pay ( they are currently paying much more to DR Goodnight and HIS guys)

Why would any sane customer buy it from Revolution- if he could download exactly the same thing from http://r-project.org

Hence the business need for Revolution Analytics to have an enhanced R- as they are using a product based software model not software as a service model.

If Revolution gives away source code of these new enhanced codes to R core team- how will R core team protect the above mentioned intelectual property- given they have 2 decades experience of giving away free code , and back and forth on just code.

Now Revolution also has a marketing budget- and thats how they sponsor some R Core events, conferences, after conference snacks.

How would people decide if they are being too generous or too stingy in their contribution (compared to the formidable generosity of SAS Institute to its employees, stakeholders and even third party analysts).

Would it not be better- IF Revolution can shift that aspect of relationship to its Research and Development budget than it’s marketing budget- come with some sort of incentive for “SOME” developers – even researchers need grants and assistantships, scholarships, make a transparent royalty formula say 17.5 % of the NEW R sales goes to R PACKAGE Developers pool, which in turn examines usage rate of packages and need/merit before allocation- that would require Revolution to evolve from a startup to a more sophisticated corporate and R Core can use this the same way as John M Chambers software award/scholarship

Dont pay all developers- it would be an insult to many of them – say Prof Harrell creator of HMisc to accept – but can Revolution expand its dev base (and prospect for future employees) by even sponsoring some R Scholarships.

And I am sure that if Revolution opens up some more code to the community- they would the rest of the world and it’s help useful. If it cant trust people like R Gentleman with some source code – well he is a board member.

——————————————————————————————–

Now to sum up some technical discussions on NeW R

1)  An accepted way of benchmarking efficiencies.

2) Code review and incorporation of efficiencies.

3) Multi threading- Multi core usage are trends to be incorporated.

4) GUIs like R Commander E Plugins for other packages, and Rattle for Data Mining to have focussed (or Deducer). This may involve hiring User Interface Designers (like from Apple 😉  who will work for love AND money ( Even the Beatles charge royalty for that song)

5) More support to cloud computing initiatives like Biocep and Elastic R – or Amazon AMI for using cloud computers- note efficiency arguements dont matter if you just use a Chrome Browser and pay 2 cents a hour for an Amazon Instance. Probably R core needs more direct involvement of Google (Cloud OS makers) and Amazon as well as even Salesforce.com (for creating Force.com Apps). Note even more corporates here need to be involved as cloud computing doesnot have any free and open source infrastructure (YET)

_______________________________________________________

Debates will come and go. This is an interesting intellectual debate and someday the liitle guys will win the Revolution-

From Hugh M of Gaping Void-

http://www.gapingvoid.com/Moveable_Type/archives/cat_microsoft_blue_monster_series.html

SOFTWARE IS FREE?

“If something goes wrong with Microsoft, I can phone Microsoft up and have it fixed. With Open Source, I have to rely on the community.”

And the community, as much as we may love it, is unpredictable. It might care about your problem and want to fix it, then again, it may not. Anyone who has ever witnessed something online go “viral”, good or bad, will know what I’m talking about.

and especially-

http://gapingvoid.com/2007/04/16/how-well-does-open-source-currently-meet-the-needs-of-shareholders-and-ceos/

Kind of sums up why the open core licensing is all about.

John M. Chambers Statistical Software Award – 2011

Write code, win cash, and the glory. Deep bow to Father John M Chambers, inventor of S ,for endowing this award for statistical software creation by grads and undergrads.

An effort to be matched by companies like SAS, SPSS which after all came from grad school work. Now back to the competition, I gotta get my homies from U Tenn in a team ( I was a grad student last year though taking this year off due to medico- financial reasons)

John M. Chambers Statistical Software Award – 2011
Statistical Computing Section
American Statistical Association

The Statistical Computing Section of the American Statistical
Association announces the competition for the John M.  Chambers
Statistical Software Award. In 1998 the Association for Computing
Machinery presented its Software System Award to John Chambers for the
design and development of S. Dr. Chambers generously donated his award
to the Statistical Computing Section to endow an annual prize for
The prize carries with it a cash award of \$1000, plus a substantial
allowance for travel to the annual Joint Statistical Meetings where
the award will be presented.

Teams of up to 3 people can participate in the competition, with the
cash award being split among team members. The travel allowance will
be given to just one individual in the team, who will be presented the
award at JSM.  To be eligible, the team must have designed and
implemented a piece of statistical software.
The individual within
the team indicated to receive the travel allowance must have begun the
development while a student, and must either currently be a student,
or have completed all requirements for her/his last degree after
January 1, 2009.  To apply for the award, teams must provide the
following materials:

Current CV’s of all team members.

A letter from a faculty mentor at the academic institution of the
individual indicated to receive the travel award.  The letter
should confirm that the individual had substantial participation in
the development of the software, certify her/his student status
when the software began to be developed (and either the current
student status or the date of degree completion), and briefly
discuss the importance of the software to statistical practice.

A brief, one to two page description of the software, summarizing
what it does, how it does it, and why it is an important
contribution.  If the team member competing for the travel
allowance has continued developing the software after finishing
her/his studies, the description should indicate what was developed
when the individual was a student and what has been added since.

An installable software package with its source code for use by the
award committee. It should be accompanied by enough information to allow
the judges to effectively use and evaluate the software (including
its design considerations.)  This information can be provided in a
variety of ways, including but not limited to a user manual (paper
or electronic), a paper, a URL, and online help to the system.

All materials must be in English.  We prefer that electronic text be
submitted in Postscript or PDF.  The entries will be judged on a
variety of dimensions, including the importance and relevance for
statistical practice of the tasks performed by the software, ease of
use, clarity of description, elegance and availability for use by the
statistical community. Preference will be given to those entries that
are grounded in software design rather than calculation.  The decision
of the award committee is final.

All application materials must be received by 5:00pm EST, Monday,
February 21, 2011 at the address below.  The winner will be announced
in May and the award will be given at the 2011 Joint Statistical
Meetings.

Information on the competition can also be accessed on the website of
the Statistical Computing Section (www.statcomputing.org or see the
ASA website, www.amstat.org for a pointer), including the names and
contributions of previous winners.  Inquiries and application
materials should be emailed or mailed to:

Chambers Software Award
c/o Fei Chen
Avaya Labs
233 Mt Airy Rd.