Hi, This idea was also discussed when Paul Murrell first announced the grid.raster function to R-devel, http://tolstoy.newcastle.edu.au/R/e8/devel/09/12/0912.html
My personal conclusion was that vector fill patterns are generally better in terms of resolution and speed. Of course the situation might be different if one wanted to use a fancy image pattern, or if there was a fast implementation of tiling patterns at the C level. I wrote a proof-of-concept here --- my main issue is that the resulting grob is not vectorized, http://gridextra.googlecode.com/svn/trunk/inst/comparisonPattern.r Best, baptiste On 22 April 2010 14:10, Tal Galili <tal.gal...@gmail.com> wrote: > Hello Peter, > Thank you, and the R core team, for the new release. > > > I see that in R 2.11.0 there is now support for rendering of raster (bitmap) > images through rasterImage(). > > I am wondering - can this be used to create a texture/fill-pattern for > hist()/barplot() ? > (A request made several times throughout the years on the mailing list. > For example: > http://osdir.com/ml/lang.r.general/2005-07/msg00799.html > ) > > (I am also sending this e-mail to the maintainers of lattice, ggplot2 and > gplots in the hope for more perspectives) > > With much respect, > Tal > > > > > > > > > ----------------Contact > Details:------------------------------------------------------- > Contact me: tal.gal...@gmail.com | 972-52-7275845 > Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | > www.r-statistics.com (English) > ---------------------------------------------------------------------------------------------- > > > > > On Thu, Apr 22, 2010 at 12:01 PM, Peter Dalgaard <pd....@cbs.dk> wrote: > >> I've rolled up R-2.11.0.tar.gz a short while ago. This is a development >> release which contains a number of new features. >> >> Also, a number of mostly minor bugs have been fixed. See the full list >> of changes below. >> >> NOTE: The build platform has been changed for this release. Please watch >> out extra carefully for anomalies. >> >> You can get it from >> >> http://cran.r-project.org/src/base/R-2/R-2.11.0.tar.gz >> >> or wait for it to be mirrored at a CRAN site nearer to you. >> >> Binaries for various platforms will appear in due course. >> >> For the R Core Team >> >> Peter Dalgaard >> >> These are the md5sums for the freshly created files, in case you wish >> to check that they are uncorrupted: >> >> MD5 (AUTHORS) = ac9746b4845ae866661f51cfc99262f5 >> MD5 (COPYING) = eb723b61539feef013de476e68b5c50a >> MD5 (COPYING.LIB) = a6f89e2100d9b6cdffcea4f398e37343 >> MD5 (FAQ) = 5b653442bedab476a4eff7468192fb5f >> MD5 (INSTALL) = 70447ae7f2c35233d3065b004aa4f331 >> MD5 (NEWS) = 59017734fb8474f98f994c7a5a27f9fb >> MD5 (ONEWS) = a8c985af5ad5e9c7e0a9f502d07baeb4 >> MD5 (OONEWS) = 4f004de59e24a52d0f500063b4603bcb >> MD5 (R-latest.tar.gz) = c6c1e866299f533617750889c729bfb3 >> MD5 (README) = 433182754c05c2cf7a04ad0da474a1d0 >> MD5 (RESOURCES) = 020479f381d5f9038dcb18708997f5da >> MD5 (THANKS) = f2ccf22f3e20ebaa86f8ee5cc6b0f655 >> MD5 (R-2/R-2.11.0.tar.gz) = c6c1e866299f533617750889c729bfb3 >> >> This is the relevant part of the NEWS file: >> >> CHANGES IN R VERSION 2.11.0 >> >> >> SIGNIFICANT USER-VISIBLE CHANGES >> >> o Packages must have been installed under R >= 2.10.0, as the >> current help system is the only one now supported. >> >> o A port to 64-bit Windows is now available as well as binary >> package repositiories: see the 'R Administration and >> Installation Manual'. >> >> o Argument matching for primitive functions is now done in the >> same way as for interpreted functions except for the deliberate >> exceptions >> >> call switch .C .Fortran .Call .External >> >> all of which use positional matching for their first argument, >> and also some internal-use-only primitives. >> >> o The default device for command-line R at the console on Mac OS X >> is now quartz() and not X11(). >> >> >> NEW FEATURES >> >> o The 'open' modes for connections are now interpreted more >> consistently. open = "r" is now equivalent to open = "rt" for >> all connections. The default open = "" now means "rt" for all >> connections except the compressed file connections gzfile(), >> bzfile() and xzfile() for which it means "rb". >> >> o R CMD INSTALL now uses the internal untar() in package utils: >> this ensures that all platforms can install bzip2- and >> xz-compressed tarballs. In case this causes problems (as it >> has on some Windows file systems when run from Cygwin tools) >> it can be overridden by the environment variable >> R_INSTALL_TAR: setting this to a modern external tar program >> will speed up unpacking of large (tens of Mb or more) >> tarballs. >> >> o help(try.all.packages = TRUE) is much faster (although the >> time taken by the OS to find all the packages the first time >> it is used can dominate the time). >> >> o R CMD check has a new option '--timings' to record >> per-example timings in file <pkg>.Rcheck/<pkg>-Ex.timings. >> >> o The TRE library has been updated to version 0.8.0 (minor bugfixes). >> >> o grep[l], [g]sub and [g]regexpr now work in bytes in an 8-bit >> locales if there is no marked UTF-8 input string: this will be >> somewhat faster, and for [g]sub() give the result in the >> native encoding rather than in UTF-8 (which returns to the >> behaviour prior to R 2.10.0). >> >> o A new argument 'skipCalls' has been added to browser() so that >> it can report the original context when called by other >> debugging functions. >> >> o More validity checking of UTF-8 and MBCS strings is done by >> agrep() and the regular-expression matching functions. >> >> o The undocumented restriction on gregexpr() to length(text) > 0 >> has been removed. >> >> o Package tcltk now sends strings to Tcl in UTF-8: this means >> that strings with a marked UTF-8 encoding are supported in >> non-UTF-8 locales. >> >> o The graphics engine now supports rendering of raster (bitmap) >> images, though not all graphics devices can provide (full) >> support. Packages providing graphics devices (e.g., Cairo, >> RSvgDevice, cairoDevice) will need to be reinstalled. >> >> There is also support in the graphics engine for capturing >> raster images from graphics devices (again not supported >> on all graphics devices). >> >> o R CMD check now also checks if the package and namespace can >> be unloaded: this provides a check of the .Last.lib() and >> .onUnload() hook functions (unless --install=fake). >> >> o prop.table(x) now accepts a one-dimensional table for x. >> >> o A new function vapply() has been added, based on a suggestion >> from Bill Dunlap. It requires that a template for the >> function value be specified, and uses it to determine the >> output type and to check for consistency in the function >> values. >> >> o The main HTML help page now links to a reformatted copy of >> this NEWS file. (Suggested by Henrik Bengtsson.) Package >> index files link to the package DESCRIPTION and NEWS files and >> a list of demos when using dynamic help. >> >> o The [ method for class "AsIs" allows the next method to change >> the underlying class. (Wish of Jens Oehlschlägel.) >> >> o write.csv[2] no longer allow 'append' to be changed: as ever, >> direct calls to write.table() give more flexibility as well as >> more room for error. >> >> o The index page for HTML help for a package now collapses >> multiple signatures for S4 methods into a single entry. >> >> o The use of '.required' by require() and detach() has been >> replaced by '.Depends' which is set from the 'Depends' field >> of a package (even in packages with name spaces). By default >> detach() prevents such dependencies from being detached: this >> can be overridden by the argument 'force'. >> >> o bquote() has been extended to work on function definitions >> (wish of PR#14031). >> >> o detach() when applied to an object other than a package >> returns the environment that has been detached, to parallel >> attach(). >> >> o readline() in non-interactive use returns "" and does not >> attempt to read from the 'terminal'. >> >> o New function file_ext() in package 'tools'. >> >> o xtfrm() is now primitive and internally generic, as this allows >> S4 methods to be set on it without name-space scoping issues. >> >> There are now "AsIs" and "difftime" methods, and the default >> method uses unclass(x) if is.numeric(x) is true (which will be >> faster but relies on is.numeric() having been set correctly >> for the class). >> >> o is.numeric(x) is now false for a "difftime" object >> (multiplication and division make no sense for such objects). >> >> o The default method of weighted.mean(x, w) coerces 'w' to be >> numeric (aka double); previously only integer weights were >> coerced. Zero weights are handled specially so an infinite >> value with zero weight does not force an NaN result. >> >> There is now a "difftime" method. >> >> o bug.report() now has 'package' and 'lib.loc' arguments to >> generate bug reports about packages. When this is used, it >> looks for a BugReports field in the package DESCRIPTION file, >> which will be assumed to be a URL at which to submit the >> report, and otherwise generates an email to the package >> maintainer. (Suggested by Barry Rowlingson.) >> >> o quantile() now has a method for the date-time class "POSIXt", >> and types 1 and 3 (which never interpolate) work for Dates and >> ordered factors. >> >> o length(<POSIXlt>) now returns the length of the corresponding >> abstract timedate-vector rather than always 9 (the length of the >> underlying list structure). (Wish of PR#14073 and PR#10507.) >> >> o The readline completion backend no longer sorts possible >> completions alphabetically (e.g., function argument names) if >> R was built with readline >= 6. >> >> o select.list() gains a 'graphics' argument to allow Windows/Mac >> users to choose the text interface. This changes the >> behaviour of new.packages(ask=TRUE) to be like >> update.packages(ask=TRUE) on those platforms in using a text >> menu: use ask="graphics" for a graphical menu. >> >> o New function chooseBioCmirror() to set the "BioC_mirror" option. >> >> o The R grammar prevents using the argument 'name' in signatures >> of S4 methods for '$' and '$<-', since they will always be >> called with a character string value for 'name'. The implicit >> S4 generic functions have been changed to reflect this: >> packages which included 'name' in the signature of their >> methods need to be updated and re-installed. >> >> o The handling of the 'method' argument of glm() has been >> refined following suggestions by Ioannis Kosmidis and Heather >> Turner. >> >> o str() gains a new argument 'list.len' with default 99, limiting the >> number of list() items (per level), thanks to suggestions from >> David Winsenius. >> >> o Having formal arguments of an S4 method in a different order >> from the generic is now an error (the warning having been >> ignored by some package maintainers for a long time). >> >> o New functions enc2native() and enc2utf8() convert character >> vectors with possibly marked encodings to the current locale and >> UTF-8 respectively. >> >> o Unrecognized escapes and embedded nuls in character strings are >> now an error, not just a warning. Thus option "warnEscapes" >> is no longer needed. rawToChar() now removes trailing nuls >> silently, but other embedded nuls become errors. >> >> o Informational messages about masked objects displayed when a >> package is attached are now more compact, using strwrap() >> instead of one object per line. >> >> o print.rle() gains argument 'prefix'. >> >> o download.file() gains a "curl" method, mainly for use on >> platforms which have 'curl' but not 'wget', but also for some >> hard-to-access URLs. >> >> o In Rd, \eqn and \deqn will render in HTML (and convert to text) >> upper- and lower-case Greek letters (entered as \alpha ...), >> \ldots, \dots, \ge and \le. >> >> o utf8ToInt() and intToUtf8() now map NA inputs to NA outputs. >> >> o file() has a new argument 'raw' which may help if it is used >> with something other than a regular file, e.g. a character device. >> >> o New function strtoi(), a wrapper for the C function strtol. >> >> o as.octmode() and as.hexmode() now allow inputs of length other >> than one. >> >> The format() and print() methods for "octmode" now preserve >> names and dimensions (as those for "hexmode" did). >> >> The format() methods for classes "octmode" and "hexmode" gain >> a 'width' argument. >> >> o seq.int() returns an integer result in some further cases >> where seq() does, e.g. seq.int(1L, 9L, by = 2L). >> >> o Added \subsection{}{} macro to Rd syntax, for subsections >> within sections. >> >> o n-dimensional arrays with dimension names can now be indexed >> by an n-column character matrix. The indices are matched >> against the dimension names. NA indices are propagated to the >> result. Unmatched values and "" are not allowed and result in >> an error. >> >> o interaction(drop=TRUE) uses less memory (related to PR#14121). >> >> o summary() methods have been added to the "srcref" and >> "srcfile" classes, and various encoding issues have been >> cleaned up. >> >> o If option "checkPackageLicense" is set to TRUE (not currently >> the default), users will be asked to agree to >> non-known-to-be-FOSS package licences at first use. >> >> o Checking setAs(a,b) methods only gives a message instead of a >> warning, when one of a or b is unknown. >> >> o New function norm() to compute a matrix norm. >> norm() and also backsolve() and sample() have implicit S4 generics. >> >> o Renviron.site and Rprofile.site can have architecture-specific >> versions on systems with sub-architectures. >> >> o R CMD check now (by default) also checks Rd files for >> auto-generated content in need of editing, and missing argument >> descriptions. >> >> o aggregate() gains a formula method thanks to a contribution by >> Arni Magnusson. The data frame method now allows summary >> functions to return arbitrarily many values. >> >> o path.expand() now propagates NA values rather than converting them >> to "NA". >> >> o file.show() now disallows NA values for file names, headers, and >> pager. >> >> o The 'fuzz' used by seq() and seq.int() has been reduced from >> 1e-7 to 1e-10, which should be ample for the double-precision >> calculations used in R. It ensures that the fuzz never comes >> into play with sequences of integers (wish of PR#14169). >> >> o The default value of RSiteSearch(restrict=) has been changed >> to include vignettes but to exclude R-help. The R-help >> archives available have been split, with a new option of >> "Rhelp10" for those from 2010. >> >> o New function rasterImage() in the 'graphics' package for drawing >> raster images. >> >> o stats:::extractAIC.coxph() now omits aliased terms when computing >> the degrees of freedom (suggestion of Terry Therneau). >> >> o cor() and cov() now test for misuse with non-numeric >> arguments, such as the non-bug report PR#14207. >> >> o pchisq(ncp =, log.p = TRUE) is more accurate for probabilities >> near one. E.g. pchisq(80, 4, ncp=1, log.p=TRUE). (Maybe what >> was meant in PR#14126.) >> >> o maintainer() has been added, to give convenient access to the >> name of the maintainer of a package (contributed by David >> Scott). >> >> o sample() and sample.int() allow zero items to be sampled from >> a zero-length input. sample.int() gains a default value >> 'size=n' to be more similar to sample(). >> >> o switch() returned NULL on error (not previously documented on >> the help page): it now does so invisibly, analogously to >> if-without-else. >> >> It is now primitive: this means that EXPR is always matched to >> the first argument and there is no danger of partial matching >> to later named arguments. >> >> o Primitive functions UseMethod(), attr(), attr<-(), on.exit(), >> retracemem() and substitute() now use standard argument >> matching (rather than positional matching). This means that >> all multi-argument primitives which are not internal now use >> standard argument matching except where positional matching is >> desirable (as for switch(), call(), .C() ...). >> >> o All the one-argument primitives now check that any name >> supplied for their first argument is a partial match to the >> argument name as documented on the help page: this also >> applies to replacement functions of two arguments. >> >> o base::which() uses a new .Internal function when arr.ind is >> FALSE resulting in a 10x speedup. Thanks to Patrick Aboyoun >> for implementation suggestions. >> >> o Help conversion to text now uses the first part of \enc{}{} >> markup if it is representable in the current output encoding. >> On the other hand, conversion to LaTeX with the default >> outputEncoding = "ASCII" uses the second part. >> >> o A new class "listOfMethods" has been introduced to represent >> the methods in a methods table, to replace the deprecated >> class "MethodsList". >> >> o any() and all() return early if possible. This may speed up >> operations on long vectors. >> >> o strptime() now accepts "%z" (for the offset from UTC in the >> RFC822 format of +/-hhmm). >> >> o The PCRE library has been updated to version 8.02, a bug-fix >> release which also updates tables to Unicode 5.02. >> >> o Functions which may use a graphical select.list() (including >> menu() and install.packages()) now check on a Unix-alike that >> Tk can be started (and not just >> capabilities("tcltk") && capabilities("X11")). >> >> o The parser no longer marks strings containing octal or hex >> escapes as being in UTF-8 when entered in a UTF-8 locale. >> >> o On platforms with cairo but not Pango (notably Mac OS X) the >> initial default X11() type is set to "Xlib": this avoids >> several problems with font selection when done by cairo rather >> than Pango (at least on Mac OS X). >> >> o New arrayInd() such that which(x, arr.ind = TRUE) for an array >> 'x' is now equivalent to arrayInd(which(x), dim(x), dimnames(x)). >> >> >> DEPRECATED & DEFUNCT >> >> o Bundles of packages are defunct. >> >> o stats::clearNames() is defunct: use unname(). >> >> o Basic regular expressions are defunct, and strsplit(), grep(), >> grepl(), sub(), gsub(), regexpr() and gregexpr() no longer >> have an 'extended' argument. >> >> o methods::trySilent() is defunct. >> >> o index.search() (which was deprecated in 2.10.0) is no longer >> exported and has a different argument list. >> >> o Use of multiple arguments to return() is now defunct. >> >> o The use of UseMethod() with more than two arguments is now defunct. >> >> o In the 'methods' package, the MethodsList metadata objects which >> had been superseded by hash tables (environments) since R >> 2.8.0 are being phased out. Objects of this class are no >> longer assigned or used as metadata by the package. >> >> getMethods() is now deprecated, with its internal use replaced >> by findMethods() and other changes. Creating objects from the >> MethodsList class is also deprecated. >> >> o Parsing strings containing both octal/hex and Unicode escapes >> now gives a warning and will become an error in R 2.12.0. >> >> >> INSTALLATION >> >> o UTF-8 is now used for the reference manual and package >> manuals. This requires LaTeX '2005/12/01' or later. >> >> o configure looks for a POSIX compliant tr, Solaris's >> /usr/ucb/tr having been found to cause Rdiff to malfunction. >> >> o configure is now generated with autoconf-2.65, which works >> better on recent systems and on Mac OS X. >> >> >> PACKAGE INSTALLATION >> >> o Characters in R source which are not translatable to the >> current locale are now handled more tolerantly: these will be >> converted to hex codes with a warning. Such characters are >> only really portable if they appear in comments. >> >> o R CMD INSTALL now tests that the installed package can be loaded >> (and backs out the installation if it cannot): this can be >> suppressed by --no-test-load. This avoids installing/updating >> a package that cannot be used: common causes of failures to >> load are missing/incompatible external software and >> missing/broken dependent packages. >> >> o Package installation on Windows for a package with a src >> directory now checks if a DLL is created unless there is a >> src/Makefile.win file: this helps catch broken installations >> where the toolchain has not reported problems in building the DLL. >> (Note: this can be any DLL, not just one named <pkg-name>.dll.) >> >> >> BUG FIXES >> >> o Using with(), eval() etc with a list with some unnamed >> elements now works. (PR#14035) >> >> o The "quick" dispatch of S4 methods for primitive functions was >> not happening, forcing a search each time. (Dispatch for >> closures was not affected.) A side effect is that default >> values for arguments in a method that do not have defaults in >> the generic will now be ignored. >> >> o Trying to dispatch S4 methods for primitives during the search >> for inherited methods slows that search down and potentially >> could cause an infinite recursion. An internal switch was >> added to turn off all such methods from >> findInheritedMethods(). >> >> o R framework installation (on Mac OS X) would not work properly >> if a rogue Resources directory was present at the top level. >> Such a non-symlink will now be renamed to Resources.old (and >> anything previously named Resources.old removed) as part of >> the framework installation process. >> >> o The checks for conforming S4 method arguments could fail when >> the signature of the generic function omitted some of the >> formal arguments (in addition to ...). Arguments omitted from >> the method definition but conforming (per the documentation) >> should now be ignored (treated as "ANY") in dispatching. >> >> o The computations for S4 method evaluation when '...' was in the >> signature could fail, treating '...' as an ordinary symbol. >> This has been fixed, for the known cases. >> >> o Various ar() fitting methods have more protection for singular >> fits. >> >> o callNextMethod now works again with the drop= argument in `[` >> >> o parse() and parse_Rd() miscounted columns when multibyte UTF-8 >> characters were present. >> >> o Formatting of help pages has had minor improvements: extra >> blank lines have been removed from the text format, and empty >> package labels removed from HTML. >> >> o cor(A, B) where A has n x 1 and B a 1-dimensional array >> segfaulted or gave an internal error. >> (The case cor(B, A) was PR#7116.) >> >> o cut.POSIXt() applied to a start value after the DST transition >> on a DST-change day could give the wrong time for 'breaks' in units >> of days or longer. (PR#14208) >> >> o do_par() UNPROTECTed too early (PR#14214) >> >> o subassignment x[[....]] <- y didn't check for a zero-length >> right hand side, and inserted rubbish value. (PR#14217) >> >> o fisher.test() no longer gives a P-value *very* slightly > 1, >> in some borderline cases. >> >> o Internal function matchArgs no longer modifies the general >> purpose bits of the SEXPs that make up the formals list of R >> functions. This fixes an invalid error message that would >> occur when a garbage collection triggered a second call to >> matchArgs for the same function via a finalizer. >> >> o gsub() in 2.10.x could fail from stack overflow for extremely >> long strings due to temporary data being allocated on the >> stack. Also, gsub() with fixed=TRUE is in some circumstances >> considerably faster. >> >> o Several primitives, including attributes(), attr<-() >> interactive(), nargs() and proc.time(), did not check that >> they were called with the correct number of arguments. >> >> o A potential race condition in list.files() when other processes >> are operating on the directory has been fixed; the code now >> dynamically allocates memory for file listings in a single >> pass instead of making an initial count pass. >> >> o mean(x, trim=, na.rm = FALSE) failed to return NA if 'x' >> contained missing values. (Reported by Bill Dunlap.) >> >> o Extreme tail behavior of, pbeta() {and hence pf()}, e.g., >> pbeta(x, 3, 2200, lower.tail=FALSE, log.p=TRUE) now returns >> finite values instead of jumping to -Inf too early (PR#14230). >> >> o parse(text=x) misbehaved for objects 'x' that were not coerced >> internally to character, notably symbols. (Reported to >> R-devel by Bill Dunlap.) >> >> o The internal C function 'coerceSymbol' now handles coercion to >> character, and warns if coercion fails (rather than silently >> returning NULL). This allows a name to be given where a >> character vector is required in functions which coerce >> internally. >> >> o The interpretation by strptime() of %c was non-standard (not >> that it is ever advisable to use locale- and system-specific >> input formats). >> >> o capabilities("X11") now works the same way on Mac OS X as on >> other platforms (and as documented: it was always true for R >> built with --with-aqua, as the CRAN builds are). >> >> o The X11() device with cairo but not Pango (notably Mac OS X) >> now checks validity of text strings in UTF-8 locales (since >> Pango does but cairo it seems does not). >> >> o read.fwf() misread multi-line records when n was specified. >> (PR#14241) >> >> o all.equal(*, tolerance = e) passes the numeric tolerance also to >> the comparison of the attributes. >> >> o pgamma(0,0), a boundary case, now returns 0, its limit from the >> left, rather than the limit from the right. >> >> o Issuing POST requests to the internal web server could stall >> the request under certain circumstances. >> >> o gzcon( <textConnection> ), an error, no longer damages the >> connection (in a way to have it seg.fault). (PR#14237) >> >> o All the results from hist() now use the nominal 'breaks' not >> those adjusted by the numeric 'fuzz": in recent versions the >> nominal 'breaks' were reported but the 'density' referred to >> the intervals used in the calculation -- which mattered very >> slightly for one of the extreme bins. (Based on a report by >> Martin Becker.) >> >> o If xy[z].coords (used internally by many graphics functions) are >> given a list as 'x', they now check that the list has suitable >> names and give a more informative error message. (PR#13936) >> >> >> >> >> -- >> Peter Dalgaard >> Center for Statistics, Copenhagen Business School >> Solbjerg Plads 3, 2000 Frederiksberg, Denmark >> Phone: (+45)38153501 >> Email: pd....@cbs.dk Priv: pda...@gmail.com >> >> _______________________________________________ >> r-annou...@stat.math.ethz.ch mailing list >> https://stat.ethz.ch/mailman/listinfo/r-announce >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > [[alternative HTML version deleted]] > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.