r-gregmisc-users Mailing List for R gregmisc package (Page 6)
Brought to you by:
warnes
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(12) |
Apr
(5) |
May
(3) |
Jun
(5) |
Jul
(2) |
Aug
(5) |
Sep
(7) |
Oct
(15) |
Nov
(34) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(3) |
Feb
(16) |
Mar
(28) |
Apr
(5) |
May
|
Jun
(5) |
Jul
(9) |
Aug
(50) |
Sep
(29) |
Oct
(9) |
Nov
(25) |
Dec
(7) |
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(8) |
May
(26) |
Jun
(11) |
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(9) |
2009 |
Jan
|
Feb
(1) |
Mar
|
Apr
(2) |
May
(26) |
Jun
|
Jul
(10) |
Aug
(6) |
Sep
|
Oct
(7) |
Nov
(3) |
Dec
(2) |
2010 |
Jan
(45) |
Feb
(11) |
Mar
|
Apr
(1) |
May
(8) |
Jun
(7) |
Jul
(3) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(9) |
Dec
(1) |
2011 |
Jan
(2) |
Feb
|
Mar
|
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
(14) |
Sep
(29) |
Oct
(3) |
Nov
|
Dec
(3) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
(6) |
Jun
(59) |
Jul
|
Aug
(8) |
Sep
(21) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
(1) |
Feb
|
Mar
(10) |
Apr
|
May
(18) |
Jun
(25) |
Jul
(18) |
Aug
(1) |
Sep
(6) |
Oct
(28) |
Nov
(4) |
Dec
(13) |
2014 |
Jan
(7) |
Feb
(5) |
Mar
(4) |
Apr
(36) |
May
(3) |
Jun
(7) |
Jul
(46) |
Aug
(14) |
Sep
(12) |
Oct
(2) |
Nov
|
Dec
(12) |
2015 |
Jan
(4) |
Feb
|
Mar
|
Apr
(80) |
May
(36) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <wa...@us...> - 2014-12-02 01:38:03
|
Revision: 1904 http://sourceforge.net/p/r-gregmisc/code/1904 Author: warnes Date: 2014-12-02 01:38:01 +0000 (Tue, 02 Dec 2014) Log Message: ----------- Man page fixes. Modified Paths: -------------- trunk/gplots/man/bandplot.Rd Modified: trunk/gplots/man/bandplot.Rd =================================================================== --- trunk/gplots/man/bandplot.Rd 2014-12-02 01:12:45 UTC (rev 1903) +++ trunk/gplots/man/bandplot.Rd 2014-12-02 01:38:01 UTC (rev 1904) @@ -8,14 +8,14 @@ } \usage{ bandplot(x,...) -\method{bandplot}{formula}(x, data=parent.frame(), subset, na.action, ..., +\method{bandplot}{formula}(x, data, subset, na.action, ..., xlab=NULL, ylab=NULL, add = FALSE, sd = c(-2:2), sd.col=c("magenta", "blue", "red", "blue", "magenta"), - sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), + sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), method = "frac", width = 1/5, n=50) \method{bandplot}{default}(x, y, ..., add = FALSE, sd = c(-2:2), sd.col=c("magenta", "blue", "red", "blue", "magenta"), - sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), + sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), method = "frac", width = 1/5, n=50) } \arguments{ @@ -23,11 +23,19 @@ an single independent variable (x) to use as coordinates in the scatter plot or a numeric vector of x locations} \item{y}{numeric vector of y locations} - \item{data}{a data.frame (or list) from which the variables in `formula' - should be taken.} - \item{subset}{ an optional vector specifying a subset of observations to be - used in the fitting process. } - \item{\dots}{Additional plotting parameters. } + \item{data}{an optional data.frame, list, or environment contianing + the variables used in the model (and in \code{subset}). If not found in + data, the variables are taken from environment(formula), + typically the environment from which lm is called.} + \item{subset}{an optional vector specifying a subset of observations to be + used in the fitting process.} + \item{na.action}{a function which indicates what should happen when + the data contain NAs. The default is set by the na.action + setting of options, and is na.fail if that is unset. The + factory-fresh default is na.omit. Another possible value is + NULL, no action. Value na.exclude can be useful. } + \item{\dots}{Additional plotting parameters} + \item{xlab, ylab}{x and y axis labels} \item{add}{ Boolean indicating whether the local mean and standard deviation lines should be added to an existing plot. Defaults to FALSE.} @@ -39,15 +47,13 @@ help page for \code{\link{wapply}} for details.} } \details{ - \code{bandplot} was created to look for changes in the mean or variance of scatter plots, particularly plots of regression residuals. - + The local mean and standard deviation are calculated by calling 'wapply'. By default, bandplot asks wapply to smooth using intervals that include the nearest 1/5 of the data. See the documentation of that function for details on the algorithm. - } \value{ Invisibly returns a list containing the x,y points plotted for each line. @@ -61,6 +67,7 @@ x <- 1:1000 y <- rnorm(1000, mean=1, sd=1 + x/1000 ) bandplot(x,y) +bandplot(y~x) # fixed varance, changing mean x <- 1:1000 @@ -79,10 +86,11 @@ # regression picks up the mean trend, but not the change in variance reg <- lm(y~x) summary(reg) +abline(reg=reg, col="blue", lwd=2) # using bandplot on the original data helps to show the mean and # variance trend -bandplot(x,y) +bandplot(y ~ x) # using bandplot on the residuals helps to see that regression removes # the mean trend but leaves the trend in variability This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-02 01:12:48
|
Revision: 1903 http://sourceforge.net/p/r-gregmisc/code/1903 Author: warnes Date: 2014-12-02 01:12:45 +0000 (Tue, 02 Dec 2014) Log Message: ----------- Add exports of new bandplot methods to NAMESPACE file. Modified Paths: -------------- trunk/gplots/NAMESPACE Modified: trunk/gplots/NAMESPACE =================================================================== --- trunk/gplots/NAMESPACE 2014-12-02 01:09:01 UTC (rev 1902) +++ trunk/gplots/NAMESPACE 2014-12-02 01:12:45 UTC (rev 1903) @@ -50,6 +50,9 @@ S3method(balloonplot, default) S3method(balloonplot, table) +S3method(bandplot, default) +S3method(bandplot, formula) + S3method(barplot2, default) S3method(lowess, default) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-02 01:09:05
|
Revision: 1902 http://sourceforge.net/p/r-gregmisc/code/1902 Author: warnes Date: 2014-12-02 01:09:01 +0000 (Tue, 02 Dec 2014) Log Message: ----------- Code cleanup. Modified Paths: -------------- trunk/gplots/R/bandplot.R Modified: trunk/gplots/R/bandplot.R =================================================================== --- trunk/gplots/R/bandplot.R 2014-12-02 00:07:48 UTC (rev 1901) +++ trunk/gplots/R/bandplot.R 2014-12-02 01:09:01 UTC (rev 1902) @@ -59,7 +59,7 @@ bandplot.formula <- function(x, - data=parent.frame(), + data, subset, na.action, xlab=NULL, @@ -80,20 +80,24 @@ if (missing(na.action)) na.action <- getOption("na.action") + ## construct call to model.frame to generate model matrix mf <- match.call(expand.dots = FALSE) - m <- match(c("x", "data", "subset", "na.action"), names(mf), 0L) - - # rename 'x' to 'formula' - names(mf)[m[2]] <- "formula" - mf <- mf[c(1L, m)] mf$drop.unused.levels <- TRUE mf[[1L]] <- quote(stats::model.frame) + + ## rename 'x' to 'formula' + names(mf)[2] <- "formula" + mf <- eval(mf, parent.frame()) + ## now extract x and y response <- attr(attr(mf, "terms"), "response") + x <- mf[[-response]] + y <- mf[[response]] + ## get x and y axis labels sx <- substitute(x) if (is.null(xlab)) { @@ -110,8 +114,9 @@ ylab <- "y" } - bandplot.default(x=mf[[-response]], - y=mf[[response]], + ## now call the default method to actually do the work + bandplot.default(x, + y, ..., xlab=xlab, ylab=ylab, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-02 00:07:57
|
Revision: 1901 http://sourceforge.net/p/r-gregmisc/code/1901 Author: warnes Date: 2014-12-02 00:07:48 +0000 (Tue, 02 Dec 2014) Log Message: ----------- Simplify model.frame code for bandplot.formula. Modified Paths: -------------- trunk/gplots/R/bandplot.R Modified: trunk/gplots/R/bandplot.R =================================================================== --- trunk/gplots/R/bandplot.R 2014-12-01 22:55:41 UTC (rev 1900) +++ trunk/gplots/R/bandplot.R 2014-12-02 00:07:48 UTC (rev 1901) @@ -18,7 +18,7 @@ if(length(sd.col)<length(sd)) sd <-rep(sd.col,length=length(sd)) if(length(sd.lwd)<length(sd)) sd <-rep(sd.lwd,length=length(sd)) - if(length(sd.lty)<length(sd)) sd <-rep(sd.lty,length=length(sd)) + if(length(sd.lty)<length(sd)) sd <-rep(sd.lty,length=length(sd)) if(!add) { m <- match.call(expand.dots = TRUE) @@ -54,7 +54,7 @@ ) } - + } @@ -79,33 +79,35 @@ stop("x missing or incorrect") if (missing(na.action)) na.action <- getOption("na.action") - m <- match.call(expand.dots = FALSE) - if (is.matrix(eval(m$data, parent.frame()))) - m$data <- as.data.frame(data) - m$formula <- m$x - m$... <- m$x <- m$f <- m$iter <- m$delta <- NULL - m$xlab <- m$ylab <- m$add <- m$sd <- NULL - m$sd.col <- m$sd.lwd <- m$sd.lty <- NULL - m$method <- m$width <- m$n <- NULL - m[[1]] <- as.name("model.frame") - mf <- eval(m, parent.frame()) + mf <- match.call(expand.dots = FALSE) + + m <- match(c("x", "data", "subset", "na.action"), names(mf), 0L) + + # rename 'x' to 'formula' + names(mf)[m[2]] <- "formula" + + mf <- mf[c(1L, m)] + mf$drop.unused.levels <- TRUE + mf[[1L]] <- quote(stats::model.frame) + mf <- eval(mf, parent.frame()) + response <- attr(attr(mf, "terms"), "response") - + sx <- substitute(x) if (is.null(xlab)) { - if (mode(x) != "name") + if (mode(x) != "name") xlab <- deparse(sx[[3L]]) else - xlab <- "x" + xlab <- "x" } if (is.null(ylab)) { - if (mode(x) != "name") + if (mode(x) != "name") ylab <- deparse(sx[[2L]]) else - ylab <- "y" + ylab <- "y" } bandplot.default(x=mf[[-response]], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-01 22:55:43
|
Revision: 1900 http://sourceforge.net/p/r-gregmisc/code/1900 Author: warnes Date: 2014-12-01 22:55:41 +0000 (Mon, 01 Dec 2014) Log Message: ----------- Update for 2.15.0 Modified Paths: -------------- trunk/gplots/inst/NEWS Modified: trunk/gplots/inst/NEWS =================================================================== --- trunk/gplots/inst/NEWS 2014-12-01 22:52:47 UTC (rev 1899) +++ trunk/gplots/inst/NEWS 2014-12-01 22:55:41 UTC (rev 1900) @@ -1,3 +1,12 @@ +Release 2.15.0 - 2014-12-01 +--------------------------- + +New features: + +- Convert bandplot() to S3-method dispatch and add method for class formula, so that + 'bandplot( y ~ x, data=dataframe )' now works as expected. + + Release 2.14.2 - 2014-09-17 --------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-01 22:52:57
|
Revision: 1899 http://sourceforge.net/p/r-gregmisc/code/1899 Author: warnes Date: 2014-12-01 22:52:47 +0000 (Mon, 01 Dec 2014) Log Message: ----------- Convert bandplot to S3-method dispatch and add method for class formula. Modified Paths: -------------- trunk/gplots/DESCRIPTION trunk/gplots/R/bandplot.R trunk/gplots/man/bandplot.Rd Modified: trunk/gplots/DESCRIPTION =================================================================== --- trunk/gplots/DESCRIPTION 2014-12-01 22:51:46 UTC (rev 1898) +++ trunk/gplots/DESCRIPTION 2014-12-01 22:52:47 UTC (rev 1899) @@ -4,8 +4,8 @@ Depends: R (>= 3.0) Imports: gtools, gdata, stats, caTools, KernSmooth Suggests: grid, MASS -Version: 2.14.1 -Date: 2014-06-30 +Version: 2.15.0 +Date: 2014-12-01 Author: Gregory R. Warnes, Ben Bolker, Lodewijk Bonebakker, Robert Gentleman, Wolfgang Huber Andy Liaw, Thomas Lumley, Martin Maechler, Arni Magnusson, Steffen Moeller, Marc Schwartz, Bill Modified: trunk/gplots/R/bandplot.R =================================================================== --- trunk/gplots/R/bandplot.R 2014-12-01 22:51:46 UTC (rev 1898) +++ trunk/gplots/R/bandplot.R 2014-12-01 22:52:47 UTC (rev 1899) @@ -1,6 +1,9 @@ # $Id$ -bandplot <- function(x,y, +bandplot <- function(x, ...) + UseMethod("bandplot") + +bandplot.default <- function(x, y, ..., add=FALSE, sd=c(-2:2), @@ -53,3 +56,70 @@ } } + + +bandplot.formula <- function(x, + data=parent.frame(), + subset, + na.action, + xlab=NULL, + ylab=NULL, + ..., + add=FALSE, + sd=c(-2:2), + sd.col=c("magenta","blue","red", + "blue","magenta"), + sd.lwd=c(2,2,3,2,2), + sd.lty=c(2,1,1,1,2), + method="frac", width=1/5, + n=50 + ) + { + if (missing(x) || (length(x) != 3)) + stop("x missing or incorrect") + if (missing(na.action)) + na.action <- getOption("na.action") + m <- match.call(expand.dots = FALSE) + if (is.matrix(eval(m$data, parent.frame()))) + m$data <- as.data.frame(data) + m$formula <- m$x + m$... <- m$x <- m$f <- m$iter <- m$delta <- NULL + m$xlab <- m$ylab <- m$add <- m$sd <- NULL + m$sd.col <- m$sd.lwd <- m$sd.lty <- NULL + m$method <- m$width <- m$n <- NULL + + m[[1]] <- as.name("model.frame") + mf <- eval(m, parent.frame()) + response <- attr(attr(mf, "terms"), "response") + + sx <- substitute(x) + + if (is.null(xlab)) { + if (mode(x) != "name") + xlab <- deparse(sx[[3L]]) + else + xlab <- "x" + } + + if (is.null(ylab)) { + if (mode(x) != "name") + ylab <- deparse(sx[[2L]]) + else + ylab <- "y" + } + + bandplot.default(x=mf[[-response]], + y=mf[[response]], + ..., + xlab=xlab, + ylab=ylab, + add=add, + sd=sd, + sd.col=sd.col, + sd.lwd=sd.lwd, + sd.lty=sd.lty, + method=method, + width=width, + n=n + ) + } Modified: trunk/gplots/man/bandplot.Rd =================================================================== --- trunk/gplots/man/bandplot.Rd 2014-12-01 22:51:46 UTC (rev 1898) +++ trunk/gplots/man/bandplot.Rd 2014-12-01 22:52:47 UTC (rev 1899) @@ -1,40 +1,32 @@ -% $Id$ -% -% $Log$ -% Revision 1.7 2005/12/01 16:46:52 nj7w -% Updated Greg's email address -% -% Revision 1.6 2005/06/09 14:20:28 nj7w -% Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. -% -% Revision 1.1.1.1 2005/05/25 22:15:30 nj7w -% Initial submission as an individual package -% -% Revision 1.5 2003/11/19 14:52:32 warnes -% -% Remove extranious NULL that confused R CMD check. -% -% Revision 1.4 2002/09/23 13:59:30 warnes -% - Modified all files to include CVS Id and Log tags. -% -% - \name{bandplot} \alias{bandplot} +\alias{bandplot.formula} +\alias{bandplot.default} \title{Plot x-y Points with Locally Smoothed Mean and Standard Deviation} \description{ - Plot x-y Points with lines showing the locally smoothed mean and - standard deviation. - } + Plot x-y points with curves for locally smoothed mean and standard deviation. +} \usage{ - bandplot(x, y, ..., add = FALSE, sd = c(-2:2), +bandplot(x,...) +\method{bandplot}{formula}(x, data=parent.frame(), subset, na.action, ..., + xlab=NULL, ylab=NULL, add = FALSE, sd = c(-2:2), sd.col=c("magenta", "blue", "red", "blue", "magenta"), sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), - method = "frac", width = 1/5, n=50) + method = "frac", width = 1/5, n=50) +\method{bandplot}{default}(x, y, ..., add = FALSE, sd = c(-2:2), + sd.col=c("magenta", "blue", "red", "blue", "magenta"), + sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), + method = "frac", width = 1/5, n=50) } \arguments{ - \item{x}{numeric vector of x locations} - \item{y}{numeric vector of x locations} + \item{x}{either formula providing a single dependent variable (y) and + an single independent variable (x) to use as coordinates in the + scatter plot or a numeric vector of x locations} + \item{y}{numeric vector of y locations} + \item{data}{a data.frame (or list) from which the variables in `formula' + should be taken.} + \item{subset}{ an optional vector specifying a subset of observations to be + used in the fitting process. } \item{\dots}{Additional plotting parameters. } \item{add}{ Boolean indicating whether the local mean and standard deviation lines should be added to an existing plot. Defaults to This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-12-01 22:51:52
|
Revision: 1898 http://sourceforge.net/p/r-gregmisc/code/1898 Author: warnes Date: 2014-12-01 22:51:46 +0000 (Mon, 01 Dec 2014) Log Message: ----------- Improve whitespace Modified Paths: -------------- trunk/gplots/NAMESPACE Modified: trunk/gplots/NAMESPACE =================================================================== --- trunk/gplots/NAMESPACE 2014-10-09 18:56:18 UTC (rev 1897) +++ trunk/gplots/NAMESPACE 2014-12-01 22:51:46 UTC (rev 1898) @@ -41,11 +41,9 @@ importFrom(stats, reorder) importFrom(stats, na.omit) -# No Namespace importFrom(caTools, runsd) importFrom(caTools, runmean) -# No Namespace importFrom(KernSmooth, bkde2D) importFrom(KernSmooth, dpik) @@ -58,9 +56,7 @@ S3method(lowess, formula) S3method(ooplot, default) - S3method(plot, venn) - S3method(print, ci2d) S3method(print, hist2d) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-10-09 18:56:27
|
Revision: 1897 http://sourceforge.net/p/r-gregmisc/code/1897 Author: warnes Date: 2014-10-09 18:56:18 +0000 (Thu, 09 Oct 2014) Log Message: ----------- Update for 3.5.0 release of gtools Modified Paths: -------------- trunk/gtools/DESCRIPTION trunk/gtools/inst/NEWS Modified: trunk/gtools/DESCRIPTION =================================================================== --- trunk/gtools/DESCRIPTION 2014-10-09 18:52:58 UTC (rev 1896) +++ trunk/gtools/DESCRIPTION 2014-10-09 18:56:18 UTC (rev 1897) @@ -1,8 +1,8 @@ Package: gtools Title: Various R programming tools Description: Various R programming tools -Version: 3.4.2 -Date: 2014-08-26 +Version: 3.5.0 +Date: 2014-10-09 Author: Gregory R. Warnes, Ben Bolker, and Thomas Lumley Maintainer: Gregory R. Warnes <gr...@wa...> License: LGPL-2.1 Modified: trunk/gtools/inst/NEWS =================================================================== --- trunk/gtools/inst/NEWS 2014-10-09 18:52:58 UTC (rev 1896) +++ trunk/gtools/inst/NEWS 2014-10-09 18:56:18 UTC (rev 1897) @@ -1,3 +1,15 @@ +gtools 3.5.0 - 2014-10-08 +------------------------- + +New features: + +- New functions first() and last() to retrun the first or last + element of a vector or list. + +- New functions left() and right() to return the leftmost or + rightmost n (default to 6) columns of a matrix or dataframe. + + gtools 3.4.1 - 2014-05-27 ------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-10-09 18:53:00
|
Revision: 1896 http://sourceforge.net/p/r-gregmisc/code/1896 Author: warnes Date: 2014-10-09 18:52:58 +0000 (Thu, 09 Oct 2014) Log Message: ----------- Make right() and left() S3 methods for classes data.frame and matrix Modified Paths: -------------- trunk/gtools/R/first.R Modified: trunk/gtools/R/first.R =================================================================== --- trunk/gtools/R/first.R 2014-09-17 22:26:29 UTC (rev 1895) +++ trunk/gtools/R/first.R 2014-10-09 18:52:58 UTC (rev 1896) @@ -1,21 +1,26 @@ first <- function(x) UseMethod("first") last <- function(x) UseMethod("last") +left <- function(x, n) UseMethod("left") +right <- function(x, n) UseMethod("left") first.default <- function(x) x[1] -last.default <- function(x) x[length(x)] +last.default <- function(x) x[length(x)] -first.list <- function(x) x[[1]] -last.list <- function(x) x[[length(x)]] +first.list <- function(x, ...) x[[1]] +last.list <- function(x, ...) x[[length(x)]] -left <- function(x, n=6) + +left.data.frame <- function(x, n=6) { n <- min(n, ncol(x)) x[, 1:n] } +left.matrix <- left.data.frame -right <- function(x, n=6) +right.data.frame <- function(x, n=6) { n <- min(n, ncol(x)) x[, (ncol(x)-n+1):ncol(x)] } +right.matrix <- right.data.frame This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 22:26:38
|
Revision: 1895 http://sourceforge.net/p/r-gregmisc/code/1895 Author: warnes Date: 2014-09-17 22:26:29 +0000 (Wed, 17 Sep 2014) Log Message: ----------- Minor reformatting. Modified Paths: -------------- trunk/gplots/NAMESPACE Modified: trunk/gplots/NAMESPACE =================================================================== --- trunk/gplots/NAMESPACE 2014-09-17 22:25:57 UTC (rev 1894) +++ trunk/gplots/NAMESPACE 2014-09-17 22:26:29 UTC (rev 1895) @@ -49,20 +49,22 @@ importFrom(KernSmooth, bkde2D) importFrom(KernSmooth, dpik) -S3method(balloonplot,default) -S3method(balloonplot,table) +S3method(balloonplot, default) +S3method(balloonplot, table) -S3method(barplot2,default) +S3method(barplot2, default) -S3method(lowess,default) -S3method(lowess,formula) +S3method(lowess, default) +S3method(lowess, formula) -S3method(ooplot,default) +S3method(ooplot, default) -S3method(textplot,character) -S3method(textplot,data.frame) -S3method(textplot,default) -S3method(textplot,matrix) +S3method(plot, venn) -S3method(print,ci2d) -S3method(print,hist2d) +S3method(print, ci2d) +S3method(print, hist2d) + +S3method(textplot, character) +S3method(textplot, data.frame) +S3method(textplot, default) +S3method(textplot, matrix) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 22:26:00
|
Revision: 1894 http://sourceforge.net/p/r-gregmisc/code/1894 Author: warnes Date: 2014-09-17 22:25:57 +0000 (Wed, 17 Sep 2014) Log Message: ----------- Explicitly reset namespace for dendrogram functions copied from stats. Modified Paths: -------------- trunk/gplots/R/plotNode.R Modified: trunk/gplots/R/plotNode.R =================================================================== --- trunk/gplots/R/plotNode.R 2014-09-17 22:08:20 UTC (rev 1893) +++ trunk/gplots/R/plotNode.R 2014-09-17 22:25:57 UTC (rev 1894) @@ -1,14 +1,16 @@ +here <- function() {} + plot.dendrogram <- stats:::plot.dendrogram -environment(plot.dendrogram) <- .GlobalEnv +environment(plot.dendrogram) <- environment(here) plotNodeLimit <- stats:::plotNodeLimit -environment(plotNodeLimit) <- .GlobalEnv +environment(plotNodeLimit) <- environment(here) .memberDend <- stats:::.memberDend -environment(.memberDend) <- .GlobalEnv +environment(.memberDend) <- environment(here) .midDend <- stats:::.midDend -environment(.midDend) <- .GlobalEnv +environment(.midDend) <- environment(here) unByteCode <- function(fun) { @@ -18,4 +20,4 @@ } plotNode <- unByteCode(stats:::plotNode) -environment(plotNode) <- .GlobalEnv +environment(plotNode) <- environment(here) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 22:08:22
|
Revision: 1893 http://sourceforge.net/p/r-gregmisc/code/1893 Author: warnes Date: 2014-09-17 22:08:20 +0000 (Wed, 17 Sep 2014) Log Message: ----------- Update DESCRIPTION and NEWS for gplots 2.14.2 Modified Paths: -------------- trunk/gplots/DESCRIPTION trunk/gplots/inst/NEWS Modified: trunk/gplots/DESCRIPTION =================================================================== --- trunk/gplots/DESCRIPTION 2014-09-17 22:03:10 UTC (rev 1892) +++ trunk/gplots/DESCRIPTION 2014-09-17 22:08:20 UTC (rev 1893) @@ -4,8 +4,8 @@ Depends: R (>= 3.0) Imports: gtools, gdata, stats, caTools, KernSmooth Suggests: grid, MASS -Version: 2.14.0 -Date: 2014-06-19 +Version: 2.14.1 +Date: 2014-06-30 Author: Gregory R. Warnes, Ben Bolker, Lodewijk Bonebakker, Robert Gentleman, Wolfgang Huber Andy Liaw, Thomas Lumley, Martin Maechler, Arni Magnusson, Steffen Moeller, Marc Schwartz, Bill Modified: trunk/gplots/inst/NEWS =================================================================== --- trunk/gplots/inst/NEWS 2014-09-17 22:03:10 UTC (rev 1892) +++ trunk/gplots/inst/NEWS 2014-09-17 22:08:20 UTC (rev 1893) @@ -1,3 +1,32 @@ +Release 2.14.2 - 2014-09-17 +--------------------------- + +Bug Fixes: + +- heatmap.2() was not respecting key.title=NA when density.info="none". + +- Correct the man page for heatmap.2 to state that the default color + for 'notecol' is cyan. + +- In heatmap.2(), modify default arguments to 'symbreaks' and 'symkey' + to make the logic more evident by replacing min(...) with + any(...). (The previous code executed properly, but relied on + implicit coercion of logicals to numeric, obscuring the intent.) + +- Calling heatmap.2 with deeply nested dendrograms could trigger a + 'node stack overflow' error. Now, this situation is deteceted, and + a message is generated indicating how to increase the relevant + recursion limit via options("expressions"=...). + +Release 2.14.1 - 2014-06-30 +--------------------------- + +Bug Fixes: + +- Correct heatmap.2() bug in Colv dendrogram object dimension checking introduced + in 2.14.0. (Reported by Yong Fuga Li.) + + Release 2.14.0 - 2014-06-18 --------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 22:03:17
|
Revision: 1892 http://sourceforge.net/p/r-gregmisc/code/1892 Author: warnes Date: 2014-09-17 22:03:10 +0000 (Wed, 17 Sep 2014) Log Message: ----------- To work around recursion limit issues triggered by deeply nested dendrograms, (1) create a local *intepreted* copy of stats:::plotNode(), (2) detect recursion limit error message within heatmap.2() and generate a more user-friendly message. Modified Paths: -------------- trunk/gplots/R/heatmap.2.R trunk/gplots/R/plotNode.R Modified: trunk/gplots/R/heatmap.2.R =================================================================== --- trunk/gplots/R/heatmap.2.R 2014-09-17 21:59:01 UTC (rev 1891) +++ trunk/gplots/R/heatmap.2.R 2014-09-17 22:03:10 UTC (rev 1892) @@ -560,7 +560,15 @@ par(mar = c(margins[1], 0, 0, 0)) if( dendrogram %in% c("both","row") ) { - plot(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none") + flag <- try( + plot.dendrogram(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none") + ) + if("try-error" %in% class(flag)) + { + cond <- attr(flag, "condition") + if(!is.null(cond) && conditionMessage(cond)=="evaluation nested too deeply: infinite recursion / options(expressions=)?") + stop('Row dendrogram too deeply nested, recursion limit exceeded. Try increasing option("expressions"=...).') + } } else plot.new() @@ -569,7 +577,15 @@ if( dendrogram %in% c("both","column") ) { - plot.dendrogram(ddc, axes = FALSE, xaxs = "i", leaflab = "none") + flag <- try( + plot.dendrogram(ddc, axes = FALSE, xaxs = "i", leaflab = "none") + ) + if("try-error" %in% class(flag)) + { + cond <- attr(flag, "condition") + if(!is.null(cond) && conditionMessage(cond)=="evaluation nested too deeply: infinite recursion / options(expressions=)?") + stop('Column dendrogram too deeply nested, recursion limit exceeded. Try increasing option("expressions"=...).') + } } else plot.new() Modified: trunk/gplots/R/plotNode.R =================================================================== --- trunk/gplots/R/plotNode.R 2014-09-17 21:59:01 UTC (rev 1891) +++ trunk/gplots/R/plotNode.R 2014-09-17 22:03:10 UTC (rev 1892) @@ -10,178 +10,12 @@ .midDend <- stats:::.midDend environment(.midDend) <- .GlobalEnv -plotNode <- - function (x1, x2, subtree, type, center, leaflab, dLeaf, nodePar, - edgePar, horiz = FALSE) -{ - inner <- !is.leaf(subtree) && x1 != x2 - yTop <- attr(subtree, "height") - bx <- plotNodeLimit(x1, x2, subtree, center) - xTop <- bx$x - hasP <- !is.null(nPar <- attr(subtree, "nodePar")) - if (!hasP) - nPar <- nodePar - if (getOption("verbose")) { - cat(if (inner) - "inner node" - else "leaf", ":") - if (!is.null(nPar)) { - cat(" with node pars\n") - str(nPar) - } - cat(if (inner) - paste(" height", formatC(yTop), "; "), "(x1,x2)= (", - formatC(x1, width = 4), ",", formatC(x2, width = 4), - ")", "--> xTop=", formatC(xTop, width = 8), "\n", - sep = "") +unByteCode <- function(fun) + { + FUN <- eval(parse(text=deparse(fun))) + environment(FUN) <- environment(fun) + FUN } - Xtract <- function(nam, L, default, indx) rep(if (nam %in% - names(L)) L[[nam]] else default, length.out = indx)[indx] - asTxt <- function(x) if (is.character(x) || is.expression( - is.null(x)) - x - else as.character(x) - i <- if (inner || hasP) - 1 - else 2 - if (!is.null(nPar)) { - pch <- Xtract("pch", nPar, default = 1L:2, i) - cex <- Xtract("cex", nPar, default = c(1, 1), i) - col <- Xtract("col", nPar, default = par("col"), i) - bg <- Xtract("bg", nPar, default = par("bg"), i) - points(if (horiz) - cbind(yTop, xTop) - else cbind(xTop, yTop), pch = pch, bg = bg, col = col, - cex = cex) - } - if (leaflab == "textlike") - p.col <- Xtract("p.col", nPar, default = "white", i) - lab.col <- Xtract("lab.col", nPar, default = par("col"), - i) - lab.cex <- Xtract("lab.cex", nPar, default = c(1, 1), i) - lab.font <- Xtract("lab.font", nPar, default = par("font"), - i) - lab.xpd <- Xtract("xpd", nPar, default = c(TRUE, TRUE), i) - if (is.leaf(subtree)) { - if (leaflab == "perpendicular") { - if (horiz) { - X <- yTop + dLeaf * lab.cex - Y <- xTop - srt <- 0 - adj <- c(0, 0.5) - } - else { - Y <- yTop - dLeaf * lab.cex - X <- xTop - srt <- 90 - adj <- 1 - } - nodeText <- asTxt(attr(subtree, "label")) - text(X, Y, nodeText, xpd = lab.xpd, srt = srt, adj = adj, - cex = lab.cex, col = lab.col, font = lab.font) - } - } - else if (inner) { - segmentsHV <- function(x0, y0, x1, y1) { - if (horiz) - segments(y0, x0, y1, x1, col = col, lty = lty, - lwd = lwd) - else segments(x0, y0, x1, y1, col = col, lty = lty, - lwd = lwd) - } - for (k in seq_along(subtree)) { - child <- subtree[[k]] - yBot <- attr(child, "height") - if (getOption("verbose")) - cat("ch.", k, "@ h=", yBot, "; ") - if (is.null(yBot)) - yBot <- 0 - xBot <- if (center) - mean(bx$limit[k:(k + 1)]) - else bx$limit[k] + .midDend(child) - hasE <- !is.null(ePar <- attr(child, "edgePar")) - if (!hasE) - ePar <- edgePar - i <- if (!is.leaf(child) || hasE) - 1 - else 2 - col <- Xtract("col", ePar, default = par("col"), - i) - lty <- Xtract("lty", ePar, default = par("lty"), - i) - lwd <- Xtract("lwd", ePar, default = par("lwd"), - i) - if (type == "triangle") { - segmentsHV(xTop, yTop, xBot, yBot) - } - else { - segmentsHV(xTop, yTop, xBot, yTop) - segmentsHV(xBot, yTop, xBot, yBot) - } - vln <- NULL - if (is.leaf(child) && leaflab == "textlike") { - nodeText <- asTxt(attr(child, "label")) - if (getOption("verbose")) - cat("-- with \"label\"", format(nodeText)) - hln <- 0.6 * strwidth(nodeText, cex = lab.cex)/2 - vln <- 1.5 * strheight(nodeText, cex = lab.cex)/2 - rect(xBot - hln, yBot, xBot + hln, yBot + 2 * - vln, col = p.col) - text(xBot, yBot + vln, nodeText, xpd = lab.xpd, - cex = lab.cex, col = lab.col, font = lab.font) - } - if (!is.null(attr(child, "edgetext"))) { - edgeText <- asTxt(attr(child, "edgetext")) - if (getOption("verbose")) - cat("-- with \"edgetext\"", format(edgeText)) - if (!is.null(vln)) { - mx <- if (type == "triangle") - (xTop + xBot + ((xTop - xBot)/(yTop - yBot)) * - vln)/2 - else xBot - my <- (yTop + yBot + 2 * vln)/2 - } - else { - mx <- if (type == "triangle") - (xTop + xBot)/2 - else xBot - my <- (yTop + yBot)/2 - } - p.col <- Xtract("p.col", ePar, default = "white", - i) - p.border <- Xtract("p.border", ePar, default = par("fg"), - i) - p.lwd <- Xtract("p.lwd", ePar, default = lwd, - i) - p.lty <- Xtract("p.lty", ePar, default = lty, - i) - t.col <- Xtract("t.col", ePar, default = col, - i) - t.cex <- Xtract("t.cex", ePar, default = 1, i) - t.font <- Xtract("t.font", ePar, default = par("font"), - i) - vlm <- strheight(c(edgeText, "h"), cex = t.cex)/2 - hlm <- strwidth(c(edgeText, "m"), cex = t.cex)/2 - hl3 <- c(hlm[1L], hlm[1L] + hlm[2L], hlm[1L]) - if (horiz) { - polygon(my + c(-hl3, hl3), mx + sum(vlm) * - c(-1L:1L, 1L:-1L), col = p.col, border = p.border, - lty = p.lty, lwd = p.lwd) - text(my, mx, edgeText, cex = t.cex, col = t.col, - font = t.font) - } - else { - polygon(mx + c(-hl3, hl3), my + sum(vlm) * - c(-1L:1L, 1L:-1L), col = p.col, border = p.border, - lty = p.lty, lwd = p.lwd) - text(mx, my, edgeText, cex = t.cex, col = t.col, - font = t.font) - } - } - plotNode(bx$limit[k], bx$limit[k + 1], subtree = child, - type, center, leaflab, dLeaf, nodePar, edgePar, - horiz) - } - } - invisible() -} + +plotNode <- unByteCode(stats:::plotNode) +environment(plotNode) <- .GlobalEnv This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 21:59:06
|
Revision: 1891 http://sourceforge.net/p/r-gregmisc/code/1891 Author: warnes Date: 2014-09-17 21:59:01 +0000 (Wed, 17 Sep 2014) Log Message: ----------- Add test case for exceeding recursion limits when plotting deeply nested dendrograms Added Paths: ----------- trunk/gplots/tests/dat.csv trunk/gplots/tests/test_plottingDeepDendrogram.R Added: trunk/gplots/tests/dat.csv =================================================================== --- trunk/gplots/tests/dat.csv (rev 0) +++ trunk/gplots/tests/dat.csv 2014-09-17 21:59:01 UTC (rev 1891) @@ -0,0 +1,2048 @@ +"","V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11" +"1",3.54830022377166,4.98762515666861,4.3153118826282,10.2225793446639,9.34254395417913,8.82492748996296,3.54830022377166,4.384503533957,5.64795953546789,4.1133546816754,4.77260190574687 +"2",6.39596545741415,7.90764242244625,4.62096009533438,11.9510144772509,9.82101063092539,11.2292732533917,4.90840757914297,5.01322721136904,6.97115740445838,4.23818768541642,5.30807251233407 +"3",3.54830022377166,3.54830022377166,3.54830022377166,10.3692011271157,6.69336803878309,5.07384942667343,3.95429096793669,3.97076798325069,3.54830022377166,3.54830022377166,3.54830022377166 +"4",4.14270956135568,3.54830022377166,3.54830022377166,10.9671738764112,5.01670287124879,5.16956541079112,4.24697193895882,3.54830022377166,3.97945053140578,3.54830022377166,3.94592105499445 +"5",4.95788009688626,4.80684586133476,4.62096009533438,10.28959071822,8.18129801634355,7.05573632290516,4.24697193895882,4.64355114355199,5.14207053784841,4.83852784420667,4.77260190574687 +"6",4.27379169695302,5.51373206269933,4.77805840635708,8.53964242110826,8.90268312222043,8.991123312071,4.35251077174588,4.96000670487273,6.61159776233956,4.34246051744749,5.19596301279726 +"7",3.54830022377166,4.28998746829493,3.54830022377166,6.6629612881525,6.23832076740441,6.95118912698659,3.54830022377166,4.14366324222193,4.80633145078724,3.54830022377166,3.54830022377166 +"8",3.97008655127665,3.54830022377166,4.53109727184687,8.59372244713554,6.14932815941719,4.39026667116431,3.54830022377166,3.54830022377166,4.15581191957622,3.54830022377166,4.33623189839069 +"9",5.06174854283329,5.10587436566836,4.17697833106617,8.0716255065244,6.02925276001858,6.91455388808087,4.12059456186923,4.56562326784538,3.54830022377166,4.1133546816754,4.88205559019666 +"10",4.38318186180789,4.58626187939733,5.24167748837746,8.95212053701228,6.40071463600213,8.21210233615098,4.95996179375818,5.01322721136904,4.73829774126364,4.94316935660089,4.42659789693357 +"11",6.01310160570544,5.37256333406501,4.70273040173548,10.8096309517258,7.45572573054755,6.91455388808087,4.95996179375818,5.40592556224865,5.14207053784841,5.03853376538012,5.37741497761244 +"12",3.54830022377166,4.80684586133476,5.45889453101379,8.27300922839699,7.82230606359757,7.38429208622585,4.52717022062621,4.90404046812327,5.2787215413229,5.12639274786288,4.50758419823284 +"13",4.27379169695302,4.3753233849767,4.43062166511718,9.07755814120734,7.26145312498405,4.79051865717914,4.52717022062621,4.48006681116437,4.73829774126364,4.1133546816754,4.42659789693357 +"14",3.54830022377166,4.07560683285484,4.3153118826282,7.93848457611293,6.05413185693349,4.48644669672571,3.54830022377166,4.14366324222193,4.15581191957622,4.1133546816754,3.54830022377166 +"15",5.43989201389799,5.82106309200949,6.38939714611082,9.85512200926738,8.41345634845132,7.02173592168141,5.6591344389259,5.36813953141026,5.908506347799,5.28435507346132,5.30807251233407 +"16",4.47860358440826,4.52173032050244,4.53109727184687,7.4237930007383,6.23832076740441,7.1531134753391,4.12059456186923,4.64355114355199,5.51298978105205,4.34246051744749,4.10886942232174 +"17",8.72758053834499,9.11000116518177,12.5652463326732,15.3526024338127,12.579241591888,11.6558517155077,8.2194276919275,8.37134068175844,9.86206851076312,8.38682659409914,8.82985605347945 +"18",5.2447303988107,5.37256333406501,4.84809592326134,3.54830022377166,4.3058722489524,3.54830022377166,5.6591344389259,5.47821319946465,6.25441840396481,5.88898252005338,5.19596301279726 +"19",5.63977041271158,5.77824442532879,6.42845492233721,8.84103029011941,5.51439142996744,7.90115103777339,5.14502080212905,4.384503533957,5.61552538792453,4.78196079501175,4.93274810645829 +"20",6.10308606649056,7.16329009363354,6.55712549554688,3.54830022377166,4.68891224809943,4.39026667116431,6.38034884627584,6.39951332746705,6.42656981487671,6.26793748710628,5.89613582798994 +"21",8.91695021626861,8.58255292698616,8.68388339535045,16.0689994434005,14.9769572072369,14.1336982846518,9.60823258806614,9.75298881703293,9.56799060808511,10.6675735771075,10.9526227861086 +"22",4.56403575450106,5.02844590494928,5.03393706940664,8.89585370355305,5.55101777956327,5.74518636420907,4.35251077174588,4.48006681116437,4.66516704800045,4.43350024566452,4.71305020543012 +"23",6.26699265805594,6.12169436992618,6.67494907374409,8.79945776033231,9.40944781013521,7.61383736342438,5.22742614345585,5.78854419980623,6.35268776105888,6.08168542829163,5.62162634442846 +"24",4.56403575450106,4.58626187939733,5.08949593862507,8.19347145355705,6.4570197312126,5.07384942667343,3.95429096793669,4.78227634053133,4.73829774126364,4.65808106126267,4.10886942232174 +"25",4.90198673375679,4.98762515666861,4.43062166511718,8.26747153196927,5.43778714177974,4.72324945023249,4.24697193895882,4.27494782787477,3.97945053140578,4.1133546816754,4.23274464232371 +"26",5.54375559944074,6.23481148737354,6.75344123428011,9.66839227629136,9.97406546890233,10.1667617003527,6.31282720400235,6.71348502662476,8.39071216893195,5.95632863375223,6.58799030207827 +"27",4.64185256734797,4.28998746829493,4.43062166511718,7.29859270438049,7.84324791613154,6.30473681676143,5.41158127901156,4.384503533957,5.96006019369919,3.94912244603611,4.82879049046518 +"28",9.96744776441568,10.1881675736414,8.78337570349508,5.53878302118535,8.45932583540746,7.94390401379986,10.5204456310971,11.0254885438205,11.0093088262179,10.2148354564346,10.1551390476869 +"29",9.23663524358812,9.86777225596715,9.80297329462446,5.45783152550403,6.59691611192018,6.18495468671691,9.30202567198749,8.55326654263295,9.17469169792013,8.62153952661202,8.22101819580532 +"30",10.7534858957759,10.5712538165739,11.1776424886436,16.572590826692,14.5513688082633,12.5988972427868,9.35231115025617,10.3714084798428,10.7386045026294,10.0808011723378,10.0664653118512 +"31",4.64185256734797,5.02844590494928,4.77805840635708,8.39482590249134,7.52659786136667,5.59180320170385,4.79704755731515,4.84495354750819,5.36185741525923,5.16791879000176,5.23451608884748 +"32",3.54830022377166,3.54830022377166,3.54830022377166,4.72904957070584,5.01670287124879,5.25801624538125,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"33",7.96841095917285,7.86416209594378,8.77224035423123,4.64558758720875,6.14932815941719,6.05368293120384,7.19474134121686,7.81291420734027,8.19183661884524,8.43693055695777,7.91847349982371 +"34",3.54830022377166,3.54830022377166,4.3153118826282,5.61488371433785,6.41973750499147,5.93366313679853,4.12059456186923,4.56562326784538,4.28967224937531,4.23818768541642,4.10886942232174 +"35",5.78549346301469,6.10474257283092,5.57306370014904,3.54830022377166,4.60803438435701,5.12270292620239,6.42891596161512,6.32724232099688,5.908506347799,6.28524461564841,6.12364384882668 +"36",9.9142251840964,10.456673858868,9.30760066705108,6.0509730364866,7.75758167592432,7.35736175394867,9.89922835777744,10.0483594239014,10.9590800133788,9.70848525745093,8.83834264114361 +"37",4.56403575450106,4.52173032050244,4.62096009533438,7.63686065552915,5.39764908336153,4.96927465433063,4.24697193895882,4.48006681116437,4.40133275723348,4.34246051744749,3.94592105499445 +"38",6.3603261369929,6.32486807052967,5.80562626524342,8.46905443827572,9.87103160056325,7.17387660588074,6.31282720400235,6.08445307616774,6.170418516415,5.84212104415619,6.17960026676426 +"39",4.14270956135568,3.92219398459048,4.62096009533438,5.94024907367982,3.54830022377166,6.82519262173196,4.52717022062621,3.54830022377166,4.40133275723348,3.54830022377166,3.54830022377166 +"40",4.27379169695302,3.92219398459048,3.99458687560867,6.82412564138579,6.96138984243564,5.68598866291392,5.05629560314322,4.14366324222193,5.7104892060778,4.23818768541642,4.23274464232371 +"41",5.63977041271158,5.66465997975799,6.50342732201785,9.37886527064805,8.21379020954388,7.36639506661982,5.81788128542292,5.99287240418047,6.10385346314284,5.88898252005338,6.21567278468669 +"42",3.97008655127665,3.54830022377166,4.3153118826282,6.6629612881525,5.4766730864177,4.48644669672571,3.95429096793669,4.14366324222193,3.54830022377166,4.1133546816754,4.33623189839069 +"43",5.7291387983615,5.56604371111536,6.42845492233721,8.30038240733836,7.76491918019003,7.2442527606336,5.30447425058107,5.36813953141026,5.43971219929874,5.97804653447498,6.10447007721142 +"44",3.54830022377166,3.92219398459048,3.54830022377166,6.40082385541707,4.95881094319955,3.9737401164974,3.54830022377166,3.97076798325069,3.54830022377166,3.94912244603611,3.54830022377166 +"45",5.15683916790939,4.80684586133476,5.94971686400677,8.19347145355705,6.00390758948263,7.23440933245103,4.736433099266,5.32915405009094,5.47688516711479,5.24679677984632,5.23451608884748 +"46",8.32221761263854,8.57658773912705,7.50586588003968,4.64558758720875,5.43778714177974,6.14258578248584,7.50874309491128,7.04980577540244,6.67324497101316,8.05281087128144,7.7180186839132 +"47",7.44862159904616,7.42579753342585,7.6015342628995,12.2564874579549,10.8911744563996,9.04251928430416,7.96271832050898,7.74639555998162,7.69313693424559,7.82257122540105,7.98633400049947 +"48",3.54830022377166,3.54830022377166,3.99458687560867,6.61077692935938,3.9890115841535,4.27998953468607,3.95429096793669,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"49",9.86520892758349,10.5424955431946,9.87236674920621,6.12845239811469,6.90903343211634,6.65746273872887,9.19356881637435,9.08073538378508,9.58193198103218,8.68030059676385,8.25101756019936 +"50",6.68133857209962,7.27859059456544,7.15025968470569,4.80590313991191,5.07172184844156,4.65095609464182,6.8156305051907,6.38179577561934,6.95889432739089,6.60625503946114,6.25082171740127 +"51",6.22781582447258,5.99833314874529,7.2288254796775,4.64558758720875,5.55101777956327,4.85356377363824,6.10801834567294,7.35769553409876,8.31633771077612,5.84212104415619,6.45977249775491 +"52",5.1102803075969,5.48674339719394,4.70273040173548,7.86698047363564,7.43744503701482,6.14258578248584,5.10151945545351,5.57941184941936,5.04112969494906,5.24679677984632,5.34323580728863 +"53",4.84297810234872,4.70290661503082,5.08949593862507,8.07796942539909,6.56323269003586,5.52494213250567,5.18694714265321,4.84495354750819,4.80633145078724,5.08331287740239,4.82879049046518 +"54",7.63627728800101,7.31504121459539,7.64299312979523,11.3155231056251,10.1037953584002,8.42949759993972,7.29295130035411,7.21698980922899,6.31421497718848,7.69511285465249,8.11779620963715 +"55",5.51007576263887,5.48674339719394,5.49810773191112,8.97266680756033,6.78362663914756,6.64253913084015,5.41158127901156,5.15921474215736,5.88196510402005,5.51920250319321,5.53547894831993 +"56",9.85426088753482,10.3645568894423,9.01512583585322,5.68673393056132,7.3024800928342,8.03709544896096,9.62537273422518,9.21193802878431,9.57994858946864,9.43106642948714,9.64291026526287 +"57",7.48165658586729,7.43244281835256,7.91061683351649,5.49895646334672,5.71993474216382,6.00694829385502,7.15728100924063,8.02409220226986,9.50666641752432,7.06787458033587,7.14334294337987 +"58",4.64185256734797,5.34229206882021,5.37656757260563,6.61077692935938,7.82932069098373,7.48720844411563,4.85422248960333,5.40592556224865,6.95889432739089,4.51507976905241,5.27185771113154 +"59",3.54830022377166,3.92219398459048,3.54830022377166,5.85076855868641,4.95881094319955,4.39026667116431,3.54830022377166,3.54830022377166,4.15581191957622,3.54830022377166,3.94592105499445 +"60",8.74463002246685,8.82320533215313,8.22053217616702,5.57739919796435,6.36186838199559,6.51705963771854,8.80849751967805,8.22290605381997,8.17087687987988,8.13454690736269,8.18594905456206 +"61",5.28634990203998,5.21302385056593,5.24167748837746,9.02933918090383,6.47529295316335,5.62396795076569,5.60160582989158,5.06400718580499,4.87007984850553,5.28435507346132,5.37741497761244 +"62",4.56403575450106,4.3753233849767,4.62096009533438,7.98650004883687,5.97807741409379,5.07384942667343,4.736433099266,4.14366324222193,5.04112969494906,4.78196079501175,4.98115357179952 +"63",5.83953755398429,6.05258163906458,5.19311942679736,4.00522961816383,3.54830022377166,4.48644669672571,5.68696720047667,5.73213596531648,5.09271807264536,5.20801686055131,5.15610281821546 +"64",3.97008655127665,4.45187351580727,3.54830022377166,6.91267003685449,4.95881094319955,4.96927465433063,4.24697193895882,4.71540688131158,3.97945053140578,3.94912244603611,4.10886942232174 +"65",3.54830022377166,3.54830022377166,3.54830022377166,6.27135914474364,5.75123300751287,4.39026667116431,4.35251077174588,4.384503533957,4.28967224937531,3.54830022377166,3.94592105499445 +"66",7.22280413999188,7.57733667784068,8.76101826342341,11.8510386468952,10.2775537127104,12.1801836468234,7.66329537746326,7.14625069543942,12.7906725698554,7.62353403261997,7.67433272987327 +"67",4.56403575450106,3.54830022377166,3.54830022377166,7.34155739329718,6.05413185693349,4.85356377363824,4.736433099266,4.84495354750819,4.80633145078724,4.34246051744749,4.10886942232174 +"68",6.01310160570544,5.8828036586062,6.28664740687677,6.82412564138579,8.28686710537504,7.37537160534035,5.37690725505175,5.86887992335646,6.47951288681902,5.45650952534963,5.02750813069502 +"69",3.54830022377166,3.54830022377166,3.54830022377166,6.12845239811469,4.3058722489524,4.14782244847307,3.54830022377166,3.54830022377166,3.54830022377166,4.1133546816754,3.54830022377166 +"70",5.75761827849279,4.90109318218552,6.99173323708118,4.33331678257734,3.9890115841535,4.65095609464182,4.90840757914297,5.64267984583869,6.170418516415,6.06158243388933,5.89613582798994 +"71",3.97008655127665,3.54830022377166,3.54830022377166,5.61488371433785,4.68891224809943,4.14782244847307,3.54830022377166,3.54830022377166,3.97945053140578,3.54830022377166,3.54830022377166 +"72",4.14270956135568,4.07560683285484,4.77805840635708,6.59294157316564,5.22247567483854,4.65095609464182,4.12059456186923,3.97076798325069,4.28967224937531,4.1133546816754,4.23274464232371 +"73",11.6866871178468,12.2420452702483,11.7383540637143,6.83927355652247,7.81525697866385,9.85335343669308,11.5066676796878,10.7648318891184,10.2639976095484,10.7754923466213,10.7681388846469 +"74",6.34215677001306,6.65907835489105,5.71099058057816,9.03586234707771,6.79812335767876,7.1841457180674,5.74090997444246,5.84263840078618,5.74066404330379,5.86575800256349,5.82675902967033 +"75",7.14227631031255,7.1308989742045,7.98977766513664,10.1775856067455,8.2403173149625,7.94990899221953,6.34699967672477,6.61141446129441,6.98331532425672,6.73656644191199,6.57431102493756 +"76",8.16886822106531,8.56458271440011,7.33404463366619,10.9908576274865,10.3079255461611,10.174458822354,7.44813034354882,7.58819087613211,8.43091825674161,7.92347700974267,8.36512505795768 +"77",5.32657933118044,4.64642175332692,5.03393706940664,6.55657468638091,5.9248799958122,5.88248359145759,4.52717022062621,4.384503533957,5.09271807264536,4.34246051744749,4.88205559019666 +"78",10.7339962972902,9.94151353297849,10.4958820344868,7.0358991602313,8.79595341846954,8.87934451321461,10.168401140003,10.6979569679753,11.4797927180091,11.111031932343,10.7688785432116 +"79",8.19393334524338,8.55247675986609,8.03401726116649,4.80590313991191,5.43778714177974,5.85613856012376,7.18546823726635,7.14625069543942,6.78897959785779,7.11627980185974,7.0871105816258 +"80",8.39316870640549,8.35051716766043,9.99391314327221,6.42127233239575,6.82667759155909,6.51705963771854,8.6091379046593,8.48159830870355,8.98382794808631,9.02816294905766,8.24250996755826 +"81",4.64185256734797,3.92219398459048,4.43062166511718,7.4825061660954,4.68891224809943,4.48644669672571,3.95429096793669,4.84495354750819,3.97945053140578,3.54830022377166,4.77260190574687 +"82",8.18895514970792,8.13188742664223,7.59309652537082,12.0941629439202,10.053892301895,9.63455860285938,7.97348809552184,7.96100560637981,7.81312427424552,8.29784698674059,8.25101756019936 +"83",9.6305371728803,9.41405214944074,10.20312642673,7.04895326229142,7.79389953239992,7.02173592168141,9.02294138520114,9.73428188217982,11.2920867030076,8.79994485661215,9.05284051470773 +"84",5.43989201389799,5.56604371111536,6.22111368694742,9.73402779194592,8.76342638056203,10.4023935374619,6.46037622252273,6.08445307616774,10.7676428137667,6.46257214152392,6.93594480505962 +"85",7.72851224971026,7.46521367211002,6.93916689557714,5.12329148338679,6.02925276001858,6.32372596223563,8.35728086541336,7.59577391721903,7.47915422709469,7.32814443229589,7.45567871962375 +"86",3.54830022377166,3.54830022377166,4.17697833106617,5.68673393056132,6.25969592333039,4.96927465433063,4.35251077174588,4.27494782787477,4.40133275723348,4.51507976905241,3.94592105499445 +"87",7.56105335493157,7.27859059456544,7.68328605018914,5.2287614540209,6.30147623701314,5.88248359145759,6.70254524427502,7.81291420734027,9.39602862205146,6.98682275830224,7.17064709329826 +"88",7.49789229134066,7.39890304907699,7.94413231320583,12.3992239585314,10.477839258701,9.59303888585416,8.03646440075341,8.52977129672558,8.63205997312033,7.71402953388634,8.37293953125497 +"89",3.54830022377166,3.54830022377166,4.17697833106617,5.53878302118535,5.01670287124879,4.27998953468607,3.54830022377166,3.97076798325069,4.28967224937531,3.54830022377166,3.54830022377166 +"90",5.20160456221532,4.64642175332692,6.19855602264465,9.49228149289181,8.54690008144452,7.3299137996592,6.18607814866558,6.0621316163943,6.49672271584863,6.61984398459466,6.99835644145586 +"91",7.08952995702998,7.04653885218916,7.292883496079,10.1805311679616,8.3368817415583,7.29247571679326,6.34699967672477,6.65607019101962,7.00732291632297,6.28524461564841,6.64141001370651 +"92",3.54830022377166,3.54830022377166,3.54830022377166,5.75482250638952,4.16918380110659,3.9737401164974,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"93",3.54830022377166,3.92219398459048,4.17697833106617,6.12845239811469,4.68891224809943,4.48644669672571,3.54830022377166,3.97076798325069,3.97945053140578,3.94912244603611,4.10886942232174 +"94",7.67958587649345,7.69241450619318,7.59309652537082,9.93927016145086,9.98820163855651,9.16352095877154,7.3603555956831,7.41031118391363,7.82660267366782,7.40012787657292,7.17963333217221 +"95",8.22344598109642,7.99532610620531,9.45410127595259,5.8812668252616,7.0961370359168,6.03051736948815,7.6962113969891,8.38450232548709,9.76065910605987,7.58292930028579,7.88056001282118 +"96",8.76816529871051,8.96690374962634,10.0379443085744,6.44142432501257,7.06063744350186,7.07795937095772,8.92386860471468,8.50186663160025,9.07398401368605,9.47780110718558,8.74212180016923 +"97",4.95788009688626,4.75624419227938,4.84809592326134,6.80881348613757,6.49332967836598,5.65534952806707,5.0091772610784,4.84495354750819,5.40139710278378,4.34246051744749,4.64957162869111 +"98",5.63977041271158,5.61629598738969,6.81323095846476,4.33331678257734,4.51917288855208,4.57254454079382,5.18694714265321,5.81586767921463,7.55409161145907,5.390508541124,5.19596301279726 +"99",4.56403575450106,4.45187351580727,4.53109727184687,6.29379629231463,5.58662010220739,5.95853781919032,4.90840757914297,4.48006681116437,4.49869474411581,4.51507976905241,4.42659789693357 +"100",9.57636320736096,9.60478743686095,9.93691385631424,6.07729316885177,6.75417835232469,7.3299137996592,8.91273841003805,8.47751017522932,8.63588601185669,9.00536960336184,8.71779464807795 +"101",8.88655510159278,8.80035892971412,7.91738279967502,6.0509730364866,6.40071463600213,7.50366343129384,8.78427179649975,8.6066423344331,8.69575946364143,8.65448007324365,8.48893343932083 +"102",4.71360779724634,4.80684586133476,4.62096009533438,8.65435140440962,6.75417835232469,6.78509433379566,5.41158127901156,4.56562326784538,8.14960710381963,4.89214603725089,5.44305738224905 +"103",6.49770703607465,6.55220842588416,6.30781724882702,8.81091520633996,7.91092643271975,6.53337388382174,6.06724579431514,6.12802624841955,6.03386567505439,5.60778853118367,6.02495041947975 +"104",4.27379169695302,3.92219398459048,4.43062166511718,7.56629088144444,5.35616394241025,4.72324945023249,4.60239513168466,4.27494782787477,4.93015836537268,4.51507976905241,4.33623189839069 +"105",7.24224442514873,7.41912121017553,7.70692907350163,5.00715176399614,6.986860119961,5.77381127177675,7.1761343582657,7.94923159757619,8.8812223607632,7.19946355001097,7.21502181493005 +"106",5.43989201389799,5.99833314874529,6.706873220412,3.54830022377166,3.54830022377166,4.72324945023249,4.60239513168466,5.06400718580499,5.61552538792453,5.390508541124,4.88205559019666 +"107",7.10023689289805,7.24874425335053,7.60992258308702,5.41530931619833,6.25969592333039,6.70130537857918,7.95730299948966,7.69792596610665,7.57822351135499,8.1204564843621,8.30103282855084 +"108",7.07874176605886,6.58874484760681,6.65871092362578,9.46837342804354,8.97073843022801,8.12460946818293,6.82765362378199,7.06085076242672,6.62726529325089,6.83277277346818,6.84820604888636 +"109",3.54830022377166,3.54830022377166,3.54830022377166,4.55382476248647,4.41984085544861,4.79051865717914,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"110",3.54830022377166,3.54830022377166,3.54830022377166,5.27816114646231,3.9890115841535,4.48644669672571,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"111",6.65235551364311,6.60071482461707,7.01730337161271,9.93927016145086,8.01298567750114,7.31131752008256,6.77893420749542,6.41700761662776,6.70308285135445,6.23265672738425,6.45977249775491 +"112",5.40326495224052,5.06782347272974,5.418413249836,7.30945573857209,6.19454648924689,5.82926094386062,5.14502080212905,5.06400718580499,4.73829774126364,5.08331287740239,4.93274810645829 +"113",5.83953755398429,6.0166588706562,6.22111368694742,8.6961465914416,6.23832076740441,6.65746273872887,5.41158127901156,5.36813953141026,5.61552538792453,5.76856946880134,5.72820962527079 +"114",8.94376822534918,9.05959422579634,9.32293901495519,6.27135914474364,7.56075963191614,7.33912187219212,8.68307708806915,8.65811030377855,10.2921303162435,8.98480171660266,8.89367732498072 +"115",6.77832045411394,6.61258342379141,5.89393465653991,8.70026017388439,7.81525697866385,7.89493821596202,6.52124265530991,6.34566665396276,6.31421497718848,6.08168542829163,6.28509519859856 +"116",5.94145031362918,6.21921231712512,6.75344123428011,8.26747153196927,6.49332967836598,7.84424329146071,5.98182671402093,5.70299476097377,5.67960036331149,5.76856946880134,6.12364384882668 +"117",3.54830022377166,3.54830022377166,3.99458687560867,6.24855060583191,4.83273793005469,3.54830022377166,3.54830022377166,3.97076798325069,3.54830022377166,3.94912244603611,3.94592105499445 +"118",7.23255742572302,7.0202222031051,8.08296329851879,10.0038887618932,9.97406546890233,9.24864854911992,7.00730249805654,7.75318796156962,8.12256962149903,7.75113025875458,7.25805623997653 +"119",7.39759226141577,7.93124106992928,9.09175618158335,5.53878302118535,5.65499240986345,5.98296049015383,7.63640716658413,6.96998692311962,7.33538873657639,7.56913446046745,7.27491277202479 +"120",10.5801971333034,10.5577029179107,9.77907978282873,6.72965577471788,7.86388858832763,9.33132601322624,10.622123536267,10.3458724268784,10.0078626350706,10.2774539923396,9.9796693691634 +"121",3.54830022377166,3.54830022377166,3.99458687560867,5.06671461268446,7.19761054304302,6.98690109334928,3.54830022377166,3.54830022377166,3.97945053140578,6.93370830289886,6.96749404277538 +"122",3.54830022377166,3.54830022377166,3.54830022377166,5.00715176399614,4.16918380110659,4.48644669672571,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166 +"123",8.58717845543906,8.89923608373775,8.52043656504386,5.65130733031753,7.82230606359757,7.44522321742214,8.54928418681421,9.06992164703882,9.59966080439663,8.69303932862712,8.82985605347945 +"124",8.10157721953491,7.82437528016681,9.55713064863933,12.2071533622678,10.2373524556362,10.6896832080787,8.30712100765054,7.97848761281659,9.06550160007034,8.79108608806571,8.90449375768947 +"125",6.9184097826443,7.1308989742045,6.22111368694742,4.72904957070584,6.00390758948263,5.77381127177675,7.19474134121686,6.84754823848757,6.8829993213614,7.22614562648883,7.12484473646843 +"126",6.70973609194007,6.73691655930512,6.95249236326906,9.2861684887304,8.20842556768602,7.62890668931544,6.46037622252273,6.58083381215475,6.53051842174467,6.56467909886764,6.54654471787116 +"127",5.54375559944074,5.24667094069968,5.33324863235043,8.88143687241979,6.56323269003586,6.72979247179919,5.18694714265321,5.64267984583869,7.52126959426053,5.12639274786288,5.37741497761244 +"128",4.27379169695302,3.92219398459048,3.54830022377166,5.27816114646231,4.60803438435701,4.65095609464182,4.12059456186923,3.54830022377166,4.15581191957622,3.54830022377166,3.54830022377166 +"129",6.51396439906776,6.38180153379745,6.72256765234604,10.2854924878837,7.40957806504676,6.86418378240018,6.63555812986883,6.36384896693785,6.70308285135445,6.06158243388933,6.21567278468669 +"130",7.14227631031255,7.21825971644639,7.18446275990153,9.62147006138431,8.36125188354092,8.57629934381883,7.02823820460525,6.76864888687765,6.90875232671333,6.93370830289886,6.95705547300987 +"131",4.27379169695302,4.85503985708184,4.3153118826282,6.64578118848052,5.55101777956327,6.2854828908731,5.0091772610784,4.56562326784538,4.73829774126364,4.78196079501175,4.98115357179952 +"132",5.57656653888652,6.0166588706562,6.79851940891416,5.06671461268446,5.01670287124879,5.34037022736344,5.44531198202201,6.96998692311962,8.16028132058192,5.95632863375223,6.33495998760446 +"133",8.13302640037837,8.49670392464652,7.85530964459838,4.55382476248647,6.02925276001858,5.80182700427773,7.62960552780545,6.84754823848757,6.93404518186094,6.88973460730697,6.54654471787116 +"134",8.3974891178613,8.50928593609447,8.50706045886544,5.45783152550403,6.81247266514148,7.12138953885052,8.25514904775311,8.38886292662863,9.06550160007034,7.71402953388634,7.7840870982867 +"135",7.4062246804254,7.09775319135822,7.59309652537082,10.8143793391349,9.77101041442592,8.69172890321855,7.7156042158484,7.69792596610665,7.87280451798811,7.37653420130328,7.64875820281652 +"136",6.59252977461817,6.75838767091851,7.40333918797982,5.00715176399614,5.51439142996744,5.49014363497923,6.20491650857206,6.88540467353742,8.77768849104139,6.04117709694692,6.04527163698523 +"137",8.87111368185725,9.17062778027327,9.28166845148273,6.42127233239575,6.69336803878309,7.05573632290516,8.53483187909828,8.41902271321194,8.76377055339133,8.45948004832555,8.54533338091267 +"138",8.69987454294599,8.43868306429472,8.63962983906694,6.82412564138579,6.49332967836598,7.4621655067507,8.96485755259403,8.525817875628,9.17469169792013,8.7367580939207,8.5693302404221 +"139",4.38318186180789,4.45187351580727,4.70273040173548,5.17721527231849,6.54608201225882,5.16956541079112,4.24697193895882,4.384503533957,5.09271807264536,3.94912244603611,4.50758419823284 +"140",6.93048309437804,7.30057251565307,7.76813503017998,10.0105253070144,10.2839341308275,9.53641552576228,7.16673889189749,7.82585569866269,8.22271435187535,8.11098555512941,7.91847349982371 +"141",4.47860358440826,3.92219398459048,3.54830022377166,5.81955380472203,5.9248799958122,5.02279148452906,4.35251077174588,4.384503533957,4.40133275723348,4.58944936008883,4.33623189839069 +"142",5.1102803075969,5.02844590494928,5.45889453101379,7.98650004883687,5.95174206023759,6.75771463598581,5.47815535844696,5.28887854364493,5.36185741525923,5.51920250319321,5.59354957822205 +"143",7.67245805714751,8.08639315734457,8.1186091113731,5.72122142567301,6.82667759155909,5.68598866291392,7.67655263199372,7.10419174654258,8.60498925706414,7.72650340227609,7.2832669135735 +"144",7.28034739162555,7.66449985887226,6.3694482360058,5.06671461268446,5.4766730864177,4.9129913680454,6.25992873135254,6.53367259212264,8.62822374295735,5.57893710519621,5.50541836722824 +"145",6.22781582447258,5.61629598738969,5.64386590959061,8.19930091953913,7.40957806504676,8.0143581580013,5.86681368403009,6.19088373634334,6.33358512450331,6.44735550801757,6.36723145639011 +"146",4.47860358440826,4.75624419227938,4.3153118826282,7.4825061660954,5.75123300751287,4.85356377363824,4.90840757914297,4.71540688131158,4.93015836537268,4.83852784420667,4.50758419823284 +"147",7.46523447778001,7.69793278885674,7.81962824379556,10.3769257465971,9.38590836437453,8.44231930831656,7.74735385935746,7.03867422770865,7.37270881899656,7.40790664530083,7.70567223139389 +"148",7.66529461226046,7.53477084058202,7.86234069862714,9.32396535040109,8.3070820659982,8.17159147679936,7.08925483758914,6.38179577561934,6.85676877684425,6.78548965119309,7.02856174187383 +"149",11.4249869346575,10.9436296712745,11.2995588950888,7.98650004883687,9.26466000878117,9.95368240397978,11.6471110768436,11.1936226247814,11.5170610146132,11.42801674627,11.3100440596757 +"150",9.77022146767524,10.3277725609993,9.67735134467817,6.82412564138579,7.64275991509742,8.11929319848446,9.81059997997685,9.15424173008054,9.78668775591481,9.35899429697753,9.24377644053609 +"151",4.95788009688626,4.98762515666861,5.9767616444246,4.00522961816383,4.60803438435701,4.39026667116431,4.85422248960333,5.47821319946465,6.74668576793685,4.72200141940468,5.30807251233407 +"152",5.36552087758783,5.27939455545772,5.45889453101379,6.74584694884066,6.10256195383644,6.3971794717333,5.14502080212905,5.20403385694408,4.98704716969574,5.24679677984632,5.07200980811868 +"153",8.91695021626861,8.89445010257218,10.2155039007044,6.57487622139197,8.0554535450824,6.59679162433492,7.88498001914227,9.06448420152243,10.8815052208511,8.13454690736269,8.26368534183221 +"154",8.58717845543906,8.53719976752436,8.43354318234649,6.29379629231463,6.58017568593367,7.76467640696839,7.95186718386867,8.38012847175178,9.01353124291589,8.80874948622336,8.75113959857946 +"155",3.54830022377166,3.54830022377166,3.54830022377166,5.06671461268446,5.12418767680969,4.14782244847307,3.54830022377166,3.97076798325069,3.97945053140578,4.1133546816754,3.54830022377166 +"156",6.5459221304447,6.81067701192704,6.79851940891416,8.84475079942027,8.24556452902951,8.0200763006083,6.94257508980405,6.39951332746705,7.40907859597,6.31922086088212,6.48930028701799 +"157",8.34476791537849,8.96918138062587,8.45227747610215,5.81955380472203,6.12614548408454,5.85613856012376,7.82675707818696,7.35769553409876,7.65584716466506,7.19946355001097,6.93594480505962 +"158",5.67024772270509,5.75630205634913,6.32866748787329,4.87732981549012,4.89765324881629,4.79051865717914,5.60160582989158,5.73213596531648,7.52954593192813,5.63600666800275,5.75354754840492 +"159",4.38318186180789,4.52173032050244,5.03393706940664,3.54830022377166,3.54830022377166,3.54830022377166,4.12059456186923,4.56562326784538,4.93015836537268,4.23818768541642,4.23274464232371 +"160",5.20160456221532,4.90109318218552,5.03393706940664,3.54830022377166,3.54830022377166,4.57254454079382,4.35251077174588,5.32915405009094,4.87007984850553,4.94316935660089,4.71305020543012 +"161",7.92113035696155,8.11962199806121,7.73785856428288,5.17721527231849,5.8974681997572,6.44982545987761,7.68313555637,7.53395441940694,7.08828955603528,6.98682275830224,7.0483473674609 +"162",4.71360779724634,4.85503985708184,6.32866748787329,4.33331678257734,4.41984085544861,3.9737401164974,4.95996179375818,5.06400718580499,5.67960036331149,5.08331287740239,5.59354957822205 +"163",6.88155947257217,7.50986682441842,6.5918119313734,4.80590313991191,5.26870826387192,4.79051865717914,6.12795561899001,6.38179577561934,6.46208792210859,6.14027133670331,5.67601085725439 +"164",5.1102803075969,4.80684586133476,5.14246728046542,10.4372772236378,10.2027492580945,9.00845975317351,7.3270512649585,7.90724538230873,9.89594177463648,7.03801974014554,7.64229261323216 +"165",6.93048309437804,6.82090632110934,6.42845492233721,4.55382476248647,5.75123300751287,5.55881082326398,6.57956677089401,6.50132385628596,7.2274218739566,6.19644645152128,6.30191763602776 +"166",5.54375559944074,5.66465997975799,5.74329962514772,8.26191243566259,7.27182102480764,6.07645934003377,5.86681368403009,5.54656694097749,6.1264044911443,5.5494201062907,5.94046067728516 +"167",8.19889436741583,8.22259985460968,8.8519686499773,6.12845239811469,7.29233343640058,6.14258578248584,7.5308267704392,8.26622421970556,9.69070049312223,7.36858224895282,7.56233988963134 +"168",9.19508261043595,9.20774635522242,8.14189122681626,6.59294157316564,6.51113614459311,6.54949985976367,8.00006449060255,8.41475267311222,8.51643740469187,7.99218152092415,7.67433272987327 +"169",7.39759226141577,7.41912121017553,7.57607042757072,9.69953119567674,8.58463511053843,8.28036153357884,7.27559076168853,7.17699871670462,7.24766993451312,7.05799252038243,7.00849647408597 +"170",6.68133857209962,7.27118736405129,5.92211619827359,4.87732981549012,4.89765324881629,5.45435632888149,6.25992873135254,6.01635514548556,6.67324497101316,6.36866909887184,6.08502244599298 +"171",9.63236942232585,9.98491423845628,9.97138301222295,6.8690907757931,8.19763587511132,7.91962981770912,9.42459643967593,9.45776633691265,9.835715546093,9.47963935157952,9.19836074801692 +"172",7.96258530413221,8.19169250510753,7.84824397936422,5.68673393056132,7.40957806504676,6.612207216185,7.79673519062234,8.10057507992873,9.50038808177752,7.36858224895282,7.81888169009264 +"173",9.93664041614915,9.60332227471692,10.0410385489833,7.6282272411301,8.30205489161311,8.73751058569768,10.2223361460872,10.0456032989481,10.2008781506145,10.1036258981269,10.2247251786142 +"174",7.34467278053384,7.41912121017553,8.25829674835298,5.49895646334672,6.94848101549024,6.37917785202581,7.15728100924063,7.80639942758163,9.32200803589805,7.05799252038243,7.34041517352733 +"175",4.47860358440826,4.52173032050244,4.17697833106617,3.54830022377166,3.54830022377166,3.54830022377166,4.736433099266,4.78227634053133,4.15581191957622,3.94912244603611,4.23274464232371 +"176",8.34923587617628,8.4808201834151,8.61074361341653,6.40082385541707,7.21921073366603,7.16353289372454,8.95404065608808,8.30827599759587,8.38617469708542,8.47800516301288,8.53143916573651 +"177",8.95845425295504,8.89923608373775,8.94744998685894,6.500187110462,7.29233343640058,7.67318643142273,8.91552902862708,8.61038024326103,9.05981879654877,8.84629310173371,8.61286188047902 +"178",4.47860358440826,5.06782347272974,4.84809592326134,8.0524239857719,6.41973750499147,5.37954658604057,5.22742614345585,5.28887854364493,5.51298978105205,5.20801686055131,5.64910430920177 +"179",11.5111393851455,11.4750413354948,11.3927231532787,8.41999648399492,9.64778520643948,10.0682906958432,11.3520924736003,11.4338596693551,11.909754760413,11.6055546500839,11.3446879465271 +"180",10.5896571157124,10.2954788660749,10.3083105791255,8.02641622832246,9.30287141447707,8.86037230025685,10.4510125497884,10.7597963035378,10.7918311257866,10.8319729859424,10.8218742927296 +"181",6.26699265805594,5.75630205634913,5.67786163365234,4.80590313991191,4.60803438435701,4.14782244847307,5.81788128542292,5.51285175027105,5.61552538792453,5.48824617712437,5.34323580728863 +"182",9.11345982061563,9.17655252407485,8.71910607848127,6.51923699993902,6.94848101549024,7.22449745441825,8.47552671694057,8.69729742885466,8.74263823210139,8.38289921774678,8.07529774133243 +"183",7.90299095098025,8.14404909879108,7.38388137229294,5.72122142567301,6.76897938111069,7.11065571890034,8.27703265362688,8.01847016657006,7.81312427424552,8.03288399019337,7.98122628200915 +"184",7.90906291659445,7.79893645999441,7.15025968470569,5.32561057076274,6.12614548408454,6.24614906756788,7.63640716658413,7.34873469645984,7.2274218739566,7.06787458033587,6.94653945327788 +"185",10.1292905245739,10.1475342400379,11.2233005207585,8.12773734675432,8.7301479243018,8.39033259099638,9.65070691891703,10.1129741003053,11.4924984667212,10.1585822952811,10.2672257278555 +"186",3.54830022377166,3.54830022377166,3.99458687560867,5.2287614540209,4.89765324881629,3.9737401164974,3.95429096793669,3.97076798325069,3.54830022377166,4.1133546816754,3.54830022377166 +"187",5.67024772270509,6.05258163906458,5.67786163365234,4.19185126479166,4.3058722489524,5.07384942667343,5.84257292711029,5.7606426863395,5.54809236335654,5.20801686055131,5.41067060124599 +"188",6.28617087473548,6.03473941582247,6.50342732201785,7.12485544624734,7.37155609004784,6.92687122010297,5.63069073389597,5.7606426863395,5.93453103270874,5.86575800256349,5.89613582798994 +"189",7.74218994995742,7.94521633128402,7.84824397936422,12.0006035758781,11.1421586932385,10.4411942834266,9.14208687930023,9.37014280166038,9.324379635642,8.7275008426473,9.04553060112572 +"190",3.54830022377166,3.54830022377166,3.54830022377166,5.27816114646231,4.51917288855208,3.54830022377166,3.54830022377166,3.54830022377166,3.54830022377166,3.94912244603611,3.54830022377166 +"191",6.3603261369929,6.38180153379745,6.28664740687677,4.64558758720875,4.89765324881629,5.12270292620239,6.00369290325292,6.27044767527808,5.96006019369919,5.97804653447498,5.75354754840492 +"192",11.3333609908044,10.9835891591669,11.8737912629646,7.57530462869955,9.02965990602696,8.77176305537253,9.95858487031001,10.3725085536542,11.1800433671402,10.4391954156623,9.88867569701722 +"193",8.50549588322863,8.38847925203875,8.35606792036895,11.1525877050588,10.3619988170923,8.93178101147768,8.33241949645516,8.24231980078866,7.99716388364244,8.39464934008847,8.46354623886851 +"194",7.05691654390939,6.32486807052967,7.02991772613112,8.66280803012047,7.7794825372703,8.48011311697305,5.91401088991375,6.51759189519488,7.51294511231341,7.12576620834847,6.85947565463405 +"195",6.95432532809127,6.32486807052967,8.31058231591351,5.911083037832,6.38142750577997,5.93366313679853,6.83957525877219,7.74639555998162,9.27373787982762,6.73656644191199,6.58799030207827 +"196",6.72372275293425,6.60071482461707,6.75344123428011,8.51649551299268,7.42821628028939,7.70906906148302,6.42891596161512,6.59620756668132,6.40846469499631,6.43197066329358,6.36723145639011 +"197",8.45665143517115,8.14000662783682,8.74970806707209,11.7250752399116,9.86763702443067,9.75581835863199,8.63307829323579,8.44018494090811,8.56139393720079,8.6512197159427,8.45620975321545 +"198",12.6595085164313,12.5060385004576,12.4657239542973,8.0716255065244,11.0297305802191,10.8416255126892,12.7399140812295,12.6767043218085,11.3011427281434,11.9411637458979,12.277390966071 +"199",5.28634990203998,5.61629598738969,5.80562626524342,7.82984692987508,6.4570197312126,6.1208982606487,5.7142170410774,5.64267984583869,5.88196510402005,5.08331287740239,5.53547894831993 +"200",11.9365742214934,11.1387726659941,12.5740837870325,9.41933413531431,10.1037953584002,10.9539576761266,12.1838711108216,12.3000467120412,12.6672287096481,12.6223563346198,12.1900759280714 +"201",9.90516062987117,9.92166641344763,9.68923458440224,7.4632017364414,7.87748596753984,8.27559185040856,9.59611210364315,9.43055547323926,9.75715285337077,9.8142358992996,9.38944660327715 +"202",5.94145031362918,5.77824442532879,6.1044136676551,7.34155739329718,7.15340186629746,6.96319334894459,5.60160582989158,5.47821319946465,6.56351593648969,5.71714885454669,5.98336777510678 +"203",7.07874176605886,6.64759822251434,7.19568362250554,8.51182113882388,8.23505088897801,7.75097540326962,6.68940081877738,6.41700761662776,6.54711451758993,6.91189218289673,6.94653945327788 +"204",5.57656653888652,5.94181150757653,6.24330683421088,4.55382476248647,4.83273793005469,5.02279148452906,6.04639115237076,5.73213596531648,5.64795953546789,5.91180974276632,5.91848170686069 +"205",7.91510931344368,7.57733667784068,7.55014554719028,5.57739919796435,6.05413185693349,6.65746273872887,7.573997487832,7.19713459908424,7.29706680728901,7.61684601028103,7.44827704992753 +"206",8.28538547120202,8.55551280370598,8.00255715830206,6.0509730364866,7.21921073366603,7.03316008565936,8.38172000092873,8.44438030541939,7.97313855605667,8.23821723466124,8.16808848214259 +"207",5.20160456221532,5.64070422642102,4.91368556592511,4.19185126479166,3.9890115841535,4.39026667116431,4.85422248960333,4.84495354750819,5.61552538792453,5.03853376538012,5.15610281821546 +"208",6.94245436265354,6.69296641160022,7.12699231844794,9.04882077054196,7.59412520476386,7.37537160534035,6.56521215361864,6.41700761662776,6.77502214750378,6.53625939289495,6.58799030207827 +"209",6.57716568849045,6.99340840750961,8.1186091113731,5.68673393056132,5.68786865869757,6.24614906756788,6.41291488277294,7.35769553409876,9.11292164986098,6.46257214152392,6.39876851545925 +"210",6.9777730900629,6.98435666679814,7.7530766872274,5.78758527908358,6.21660807334217,5.82926094386062,6.8156305051907,7.11482364221799,8.28742535969934,6.87852433571936,7.07751845829569 +"211",5.75761827849279,6.0166588706562,5.71099058057816,4.64558758720875,4.76343465978073,4.65095609464182,6.06724579431514,5.84263840078618,5.77015986861159,5.71714885454669,5.11482666269438 +"212",5.75761827849279,5.66465997975799,5.64386590959061,4.45117694514122,4.68891224809943,4.9129913680454,5.60160582989158,5.28887854364493,5.61552538792453,6.14027133670331,5.85028907707368 +"213",9.52993739431458,9.78230850566438,9.24456138472936,6.35900025183662,7.85016117313733,7.75097540326962,9.21184285422153,8.75245870326797,8.4440745219959,9.16242088799211,8.93382699486344 +"214",6.48125799080228,6.39567681457472,5.92211619827359,7.91030878238794,7.66647186177329,7.20446444646132,6.33001898832003,6.48486391434508,6.10385346314284,6.23265672738425,6.08502244599298 +"215",9.75348312115578,9.88836967709125,9.7491183462126,7.60201035882759,8.61736685659035,7.88869839278644,9.73207730559825,9.6442308475677,9.76764614105861,9.92360220760973,9.71223929604806 +"216",6.41344763352842,5.92242988896713,6.1044136676551,4.55382476248647,4.60803438435701,5.02279148452906,5.7142170410774,5.73213596531648,5.32100047365207,6.08168542829163,5.85028907707368 +"217",6.9777730900629,6.61258342379141,6.92571489804902,9.76771846146659,7.40957806504676,8.59555417354319,6.88628096459316,6.91009091397774,7.08828955603528,7.25233733061746,7.29157241507968 +"218",8.90486899759346,8.82572160192677,9.4235984354313,7.20857473893558,7.08440208246633,7.2442527606336,8.9675491380424,8.23749087428768,8.7914732544496,8.9717961107169,8.55223053166907 +"219",6.83088295905748,7.32936470367063,7.44147763113522,5.32561057076274,5.4766730864177,5.68598866291392,6.74125749547841,6.39951332746705,6.74668576793685,6.7489573804274,6.68018127508015 +"220",6.98935314955684,6.60071482461707,6.60883822823196,9.90049201893844,9.15751570756603,8.69172890321855,7.3270512649585,7.53395441940694,7.79266627085719,7.6823616197191,7.81314087141324 +"221",5.32657933118044,5.73398691359929,5.57306370014904,4.00522961816383,4.51917288855208,4.14782244847307,5.44531198202201,4.90404046812327,5.14207053784841,5.03853376538012,5.07200980811868 +"222",6.03616389920384,5.8625403799736,5.45889453101379,8.0716255065244,7.0486043849577,6.14258578248584,5.76707020137047,5.64267984583869,5.93453103270874,5.76856946880134,6.12364384882668 +"223",11.6924057331777,12.1290082471382,10.773019437843,8.46905443827572,9.28516538276155,9.47124065861144,11.4515258754407,10.9285989817443,11.2521734136811,10.8583460462227,10.4890298121467 +"224",6.76486804778371,7.06381620838836,5.77483170440128,4.45117694514122,5.31322437542958,5.45435632888149,6.3967273647607,5.99287240418047,6.3901204572901,5.91180974276632,6.02495041947975 +"225",5.54375559944074,5.64070422642102,6.12856456325381,4.45117694514122,4.76343465978073,4.79051865717914,5.41158127901156,5.64267984583869,5.908506347799,5.8180555597147,5.47462492252508 +"226",8.89574114457288,8.92057843844756,8.97360736585661,6.8690907757931,7.87070337750673,7.1841457180674,8.7345628609467,8.74227557932138,9.84400269227627,8.76417817715549,8.13168767471038 +"227",11.0361527760643,10.9249871860904,11.5665014363276,7.91740472875786,9.34009614771103,9.17891342606214,10.5690836725151,10.0783342144828,10.800372450853,11.2483406493483,10.6169558194852 +"228",5.89146640696981,5.8625403799736,5.14246728046542,4.00522961816383,4.3058722489524,4.48644669672571,5.41158127901156,5.06400718580499,5.61552538792453,4.72200141940468,4.98115357179952 +"229",3.54830022377166,3.92219398459048,3.54830022377166,5.17721527231849,4.16918380110659,4.57254454079382,3.54830022377166,4.14366324222193,4.40133275723348,3.54830022377166,3.54830022377166 +"230",5.67024772270509,5.61629598738969,5.45889453101379,4.19185126479166,4.68891224809943,4.14782244847307,5.57184698087463,5.51285175027105,5.43971219929874,4.89214603725089,4.82879049046518 +"231",12.4401889905574,12.1797700374616,12.8908928378909,9.49465064054292,11.5792948966395,10.1538411773816,11.867284149449,12.6178580828305,14.1121888532001,11.9521255976379,12.3067186938859 +"232",7.04587689925286,6.61258342379141,6.57457614518915,9.70976319199083,8.26119229282476,7.55980996663979,6.8747483721195,6.76864888687765,7.51294511231341,6.95519351510259,7.12484473646843 +"233",5.20160456221532,5.56604371111536,5.37656757260563,7.75256639760947,6.59691611192018,5.52494213250567,5.05629560314322,5.96897347115688,6.62726529325089,4.51507976905241,5.27185771113154 +"234",6.39596545741415,6.61258342379141,6.17562106732623,4.87732981549012,5.22247567483854,5.52494213250567,6.60784199424928,5.84263840078618,6.9465242259136,6.33590070251447,5.70237141167859 +"235",7.66529461226046,7.88364943662713,8.48903011050334,5.99674685124919,6.75417835232469,6.3971794717333,8.06191113975279,7.57290325679707,7.8985529026422,7.52693401117993,7.43335775691035 +"236",4.90198673375679,4.58626187939733,5.14246728046542,6.02413172001014,5.58662010220739,5.82926094386062,4.52717022062621,4.84495354750819,4.87007984850553,5.03853376538012,4.82879049046518 +"237",6.88155947257217,6.83106206268892,6.4664454336334,5.57739919796435,5.58662010220739,5.07384942667343,6.82765362378199,6.39951332746705,7.04258956503276,6.17797642034548,6.17960026676426 +"238",9.31631134390828,8.52486038361737,9.73962629225453,7.22014278192286,7.47377566559152,7.73017531178659,8.98093217188697,8.69729742885466,9.22379537423171,9.27256371819514,8.84958088897634 +"239",13.728761486741,13.8607233425091,12.2159075808996,10.1687126589722,10.5850646452263,10.9636143128865,13.548022790936,13.5230800132276,13.3831031681896,11.5554641580923,11.6401753816615 +"240",3.54830022377166,3.54830022377166,3.99458687560867,4.80590313991191,4.41984085544861,4.48644669672571,3.54830022377166,3.97076798325069,3.97945053140578,3.94912244603611,3.54830022377166 +"241",8.07483354014599,7.68687489860634,7.65924649376092,6.07729316885177,6.30147623701314,7.11065571890034,7.70916904553208,7.46934371045286,7.73664082598846,8.1714599136636,7.97095603628191 +"242",11.1473066661789,11.591919704722,11.0367348451587,8.76845148200469,9.70406709613544,9.891215506063,11.5958705265068,11.1792364690542,11.5729639576451,11.2845347042731,11.1964305071262 +"243",11.1536984472174,11.0608671440132,11.0077722301833,8.13991470128491,9.32532138773482,9.48987079253926,10.7827308573901,10.9211006204005,11.0056202014738,10.6578669124684,10.6161339903475 +"244",9.06271502611384,9.31727019248039,9.50877304707617,7.22014278192286,8.0554535450824,7.94390401379986,9.24992269172974,8.98324517579057,9.8020824016001,9.27468296710082,9.165022001599 +"245",4.71360779724634,4.19235554008301,4.43062166511718,3.54830022377166,3.54830022377166,3.54830022377166,4.24697193895882,4.14366324222193,4.28967224937531,4.1133546816754,4.50758419823284 +"246",4.56403575450106,4.3753233849767,4.17697833106617,5.94024907367982,5.43778714177974,5.07384942667343,4.79704755731515,4.64355114355199,3.97945053140578,4.83852784420667,4.58142223425457 +"247",5.20160456221532,4.45187351580727,5.24167748837746,6.55657468638091,6.72410151536218,5.07384942667343,4.60239513168466,5.15921474215736,5.47688516711479,5.12639274786288,5.15610281821546 +"248",9.30256702182736,9.1745803139299,9.23378153874019,6.80881348613757,7.40957806504676,7.9677747435797,8.84408903562239,8.32657827473498,9.23392324872176,9.04812544036838,8.84397272213366 +"249",9.78347366218095,9.52655333859387,9.50877304707617,12.6953391122702,11.1734223052915,10.5046473477716,9.59437225957796,9.68553954315012,9.56799060808511,9.32258518506948,9.65256278357491 +"250",5.43989201389799,5.48674339719394,4.91368556592511,6.7618541533593,6.56323269003586,6.2854828908731,5.34122790279734,5.54656694097749,5.43971219929874,5.45650952534963,5.50541836722824 +"251",5.94145031362918,5.90276363876433,5.92211619827359,7.66245310060682,7.21921073366603,6.432497361932,5.8906209020639,5.84263840078618,5.93453103270874,6.02045962596488,5.98336777510678 +"252",12.6766977693984,12.415664295377,12.6479816353317,16.4790630307325,15.3818287989351,14.2292431593229,12.4228967578176,12.6544934425351,13.3417185823779,12.7887256492754,12.9707046970051 +"253",16.1554051656666,16.5782353294731,16.4333139579434,11.0403359076448,13.3419412082305,13.3344515032088,15.2944548478621,15.3282803181991,14.7316326057082,14.9090526667442,14.9078193443991 +"254",10.3940514521804,10.5794726886636,9.99550905100643,6.7132762502854,8.54690008144452,8.38591439894745,9.47463695789972,9.54427952852975,9.09636272267919,9.38472946990564,9.5969906800506 +"255",4.47860358440826,4.45187351580727,3.99458687560867,6.07729316885177,5.01670287124879,5.37954658604057,4.52717022062621,4.56562326784538,4.73829774126364,4.43350024566452,4.71305020543012 +"256",9.99334023213815,9.85305373329887,9.26323430361466,7.37295311711776,8.56379340454814,9.31980128949302,10.1292894475254,10.0552267826601,9.83737678920086,10.1562858886609,10.1161415442834 +"257",7.08952995702998,7.1871087455957,7.32386510124667,5.72122142567301,6.49332967836598,5.71592278023559,7.31860235401449,6.8602800038935,7.13256598721052,7.14455133827227,7.20625676960173 +"258",6.4646125355193,6.78999327904592,6.38939714611082,4.55382476248647,5.35616394241025,6.07645934003377,6.34699967672477,6.34566665396276,6.84346871555432,5.88898252005338,6.36723145639011 +"259",7.19313722009989,7.01134044782061,7.26121415402009,5.32561057076274,6.49332967836598,6.24614906756788,6.64921354738883,7.17699871670462,8.54113298867976,6.68588238296423,6.87065613243116 +"260",9.40687946770383,9.34909275590581,10.3172710995969,6.69670383284886,7.011881067289,7.40196767134749,8.72504841042737,8.00147085187088,8.1813949362326,8.711938647811,8.33743530348905 +"261",7.97999186436353,8.9182226156652,7.63479678432445,5.78758527908358,6.23832076740441,6.44982545987761,7.47116218311666,7.81291420734027,9.38698121885692,6.08168542829163,5.9620853787682 +"262",10.6968374650283,10.2027520073997,11.3571695258769,6.99600080825042,9.09500501023367,9.79795475051923,9.8621161976401,10.1221598148832,11.0195870802336,10.5226786155599,9.9196491879125 +"263",6.3603261369929,5.84196372967787,5.80562626524342,8.24510507245238,7.21921073366603,7.36639506661982,6.14760569582541,6.39951332746705,6.21306092059042,6.59253306201405,6.58799030207827 +"264",10.7159685156674,11.0169806759872,11.5229064568078,13.1613493728569,12.24377704512,12.3789568075984,10.1352840632529,10.217073050604,10.1199333576403,11.0719745610094,11.3262142949183 +"265",6.34215677001306,6.48910884337768,5.64386590959061,4.87732981549012,5.12418767680969,5.34037022736344,6.00369290325292,5.73213596531648,6.40846469499631,6.23265672738425,6.04527163698523 +"266",5.47547404614733,5.56604371111536,6.44757980086205,7.4632017364414,6.59691611192018,7.01021906895851,5.51016217934202,5.94464232625034,6.62726529325089,5.8180555597147,5.62162634442846 +"267",9.90364431655987,9.89437218018595,10.0113717522371,7.08741090627332,7.95647212895258,8.69886764484335,9.38287162416211,9.71706240677277,9.64019961778538,9.16470826913282,9.13319442626918 +"268",8.37136993266211,8.11962199806121,8.07088217728514,6.98244809672181,7.20845157211192,7.06689129314715,8.6091379046593,8.35805755288573,8.40872034047714,8.47800516301288,8.25947513096976 +"269",3.54830022377166,4.19235554008301,3.54830022377166,7.11248315845808,4.16918380110659,3.9737401164974,3.95429096793669,4.48006681116437,4.73829774126364,4.1133546816754,4.10886942232174 +"270",8.25236519168516,7.9265522634572,8.3807299458979,6.57487622139197,7.56075963191614,7.49545959576282,8.66328536134882,8.23264568134189,8.63205997312033,8.79404506750685,8.52092980137975 +"271",8.75139371361436,8.20336073773898,7.74548781114225,6.51923699993902,6.73922021409517,6.1208982606487,7.3848338456172,7.5260358409018,7.83995565728055,7.85131946790423,7.77229881588328 +"272",9.59527466491212,10.0016929281087,9.92356297950041,6.80881348613757,7.47377566559152,7.31131752008256,8.8673374699208,8.30827599759587,9.02815643109272,8.39074328216023,8.15000326967407 +"273",5.7000257986004,6.1384379945953,4.97546638098356,7.4632017364414,7.07256943990856,6.1208982606487,5.47815535844696,6.17025054654574,6.49672271584863,5.35613896259166,5.50541836722824 +"274",4.14270956135568,4.75624419227938,4.77805840635708,3.54830022377166,3.9890115841535,3.54830022377166,4.12059456186923,4.14366324222193,4.49869474411581,4.65808106126267,4.50758419823284 +"275",8.49343925578488,8.7693223302685,8.95731472595322,6.69670383284886,7.91752207058714,7.30192771781724,8.29430297314551,8.7388651452451,10.0166867034404,7.93962609998984,8.30920223246031 +"276",9.56489612883542,8.92762288631626,9.98108190905854,12.4348114073983,11.1843769743819,12.0686240070981,9.47463695789972,9.62589475463826,11.6576635702851,9.80839743905335,9.61849246305758 +"277",5.47547404614733,4.80684586133476,5.60895207119721,6.46128859958821,5.62125976688193,6.3424578003934,4.95996179375818,5.32915405009094,5.47688516711479,5.16791879000176,4.98115357179952 +"278",5.63977041271158,5.97975507916984,5.53613856267374,8.62435595262307,6.19454648924689,6.54949985976367,6.42891596161512,5.86887992335646,5.58225280059011,6.12102121355555,6.06529256597428 +"279",8.59095487856935,8.34701589034485,7.79778562854777,10.5451937769954,10.5032162891312,9.55225913980104,8.65328656795213,8.65811030377855,8.24293726666571,8.7367580939207,8.77785916336672 +"280",7.02353677048525,7.01134044782061,7.65924649376092,10.7710704569946,7.72032026125474,7.38429208622585,7.07926563097037,6.71348502662476,8.14424013099273,7.29494863419076,7.22373327348314 +"281",4.90198673375679,4.58626187939733,4.70273040173548,4.00522961816383,3.54830022377166,3.54830022377166,4.12059456186923,4.27494782787477,5.04112969494906,4.34246051744749,4.10886942232174 +"282",5.6085567987359,5.43096210363813,6.44757980086205,5.00715176399614,4.83273793005469,4.9129913680454,5.7142170410774,5.81586767921463,6.6882430597986,5.20801686055131,5.64910430920177 +"283",5.6085567987359,5.02844590494928,5.33324863235043,7.0358991602313,7.0486043849577,8.07054073647068,5.05629560314322,7.41031118391363,8.79489893465553,5.03853376538012,4.93274810645829 +"284",7.89689319839686,7.99532610620531,7.9308198377368,10.7334578837025,8.84858460251429,8.72357825550961,7.86775976109045,7.91936722856588,7.94253054199731,8.05774971496173,8.11779620963715 +"285",8.15871854385556,7.65885108897803,7.98977766513664,9.13032454054366,10.4024370736672,9.26075389020657,8.06694686151617,7.97268388566016,8.52883814354876,8.11098555512941,7.95019258869922 +"286",4.78038542738455,4.52173032050244,4.17697833106617,3.54830022377166,3.54830022377166,3.54830022377166,4.6718025391129,4.384503533957,3.54830022377166,4.23818768541642,4.10886942232174 +"287",6.37826028686932,6.87097044509682,7.37405217620522,4.80590313991191,5.07172184844156,5.07384942667343,6.47584372686925,5.84263840078618,6.62726529325089,5.24679677984632,5.23451608884748 +"288",7.43181342491155,7.3645570520418,7.48776309257842,6.33760537438245,6.28074432712116,7.14261721935289,7.77841582295702,7.80639942758163,7.40907859597,7.89062355127854,8.00658518887559 +"289",7.00083943504019,7.06381620838836,7.38388137229294,5.911083037832,6.05413185693349,6.32372596223563,6.8747483721195,7.11482364221799,8.51227997584947,6.61984398459466,6.83684585355949 +"290",6.20780059832859,6.2502356334542,7.20681678408743,9.73402779194592,9.06862998817701,7.68043517636272,6.72847132947242,6.41700761662776,9.63065037796132,7.37653420130328,7.26650941086191 +"291",9.68098015597377,9.42238562480594,9.41884788384917,8.39482590249134,8.0554535450824,9.25834094015097,10.1823646704725,9.88836222586627,9.82905137201308,10.3191079742495,10.3196587672792 +"292",7.94496521202076,8.00869440443831,8.34106524726259,9.56847846889061,9.0417633150653,9.36759800372903,8.16412493691205,7.5260358409018,7.39100943196294,7.97661580669704,8.48172552210957 +"293",16.3063902447123,16.0952349530378,15.6917016367486,20.4055048550162,19.9540394460662,18.5072930282205,16.2738341590513,16.6137792751768,16.8195817213308,16.7066535688476,16.788573325051 +"294",8.16886822106531,7.84440655206632,8.27418290922984,10.0351438794622,8.629451972118,8.23685412620628,7.75362030032821,7.56519780081262,7.81987929878557,7.51977803239013,7.36422385202595 +"295",8.12783241497292,7.73060374593055,8.08296329851879,9.26689184815322,8.89269315381452,8.82492748996296,7.16673889189749,7.62571087362944,7.640655268231,7.94496902618954,7.76636814679326 +"296",8.71379415237108,8.06095749757165,8.61490585983729,10.4963871929741,9.19050335100519,9.77788285883847,8.14520773187748,8.11117639548181,8.11710056757884,8.68668404541811,8.5996071414767 +"297",7.6141220077179,7.17127399719128,7.97039270667412,9.85327718286724,8.39940552920771,7.90733709200254,7.18546823726635,7.33064252719431,7.29706680728901,7.60337555236943,7.58275039653866 +"298",7.84081557285448,8.49037144228086,7.46017196541071,5.81955380472203,7.26145312498405,7.01021906895851,8.06191113975279,8.12693320707114,7.80633729904285,7.73886969371636,7.72415226914976 +"299",9.28869040769012,9.56017176515734,10.1074845813491,6.7618541533593,6.79812335767876,7.33912187219212,8.228441543965,8.15281676709867,8.50392892837412,8.1714599136636,7.97610033763664 +"300",9.83688713383929,9.93220772378365,9.68923458440224,7.52035064472625,8.21913491534781,8.80522001376409,9.76028194053222,9.44944832477595,9.8718280374861,9.45742421826851,9.6412952120572 +"301",8.25712903402587,8.12372211241184,8.56844578937346,9.63870985039684,9.017453992882,8.72357825550961,7.75362030032821,7.78667569975054,7.8985529026422,7.47607388815303,7.83029488336248 +"302",9.13946690657847,9.49054809276673,9.22292047699177,7.91030878238794,7.25100929258247,7.70906906148302,9.16805766448614,8.68671532790733,9.03106374334181,8.99769100338889,9.00841434471593 +"303",7.99148015255892,8.34701589034485,7.79778562854777,6.79333341252553,6.88211086947595,6.41495063025135,7.95730299948966,7.76667701711235,8.36327023133019,7.71402953388634,7.62271891815793 +"304",6.53003463405643,7.10611233977898,6.8564678268525,4.80590313991191,5.31322437542958,5.95853781919032,6.08778488450736,6.25098415102327,6.44444218690037,6.41641371191531,6.33495998760446 +"305",4.56403575450106,5.34229206882021,4.77805840635708,3.54830022377166,4.16918380110659,4.27998953468607,4.52717022062621,4.48006681116437,4.73829774126364,4.94316935660089,4.82879049046518 +"306",3.54830022377166,3.54830022377166,3.54830022377166,4.55382476248647,4.68891224809943,4.27998953468607,4.12059456186923,3.97076798325069,3.97945053140578,3.54830022377166,3.54830022377166 +"307",7.62893019883488,7.0202222031051,8.26361165206592,5.53878302118535,6.17212405558635,6.30473681676143,7.19474134121686,6.83470072861068,7.35417069068958,7.08743489363959,6.82539357006609 +"308",6.65235551364311,6.90978341613101,6.2651475757924,8.39482590249134,7.56917419730132,7.68043517636272,7.07926563097037,6.65607019101962,6.51372282483715,6.59253306201405,6.69287089323447 +"309",3.97008655127665,3.92219398459048,3.99458687560867,5.57739919796435,5.39764908336153,4.27998953468607,4.44463567927867,3.97076798325069,4.66516704800045,4.23818768541642,4.33623189839069 +"310",7.72851224971026,8.16010627518426,7.09136174566226,5.00715176399614,6.40071463600213,5.88248359145759,7.30155298665502,6.75505909917696,7.29706680728901,6.28524461564841,6.17960026676426 +"311",6.66692177917667,6.73691655930512,6.42845492233721,5.37127805426564,5.12418767680969,4.96927465433063,6.38034884627584,5.81586767921463,6.40846469499631,5.91180974276632,5.72820962527079 +"312",6.94245436265354,7.49725036994418,6.32866748787329,5.911083037832,6.34202917570302,5.65534952806707,7.069205718794,7.00474615848269,7.23758185587131,6.88973460730697,6.81384766... [truncated message content] |
From: <wa...@us...> - 2014-09-17 21:34:37
|
Revision: 1890 http://sourceforge.net/p/r-gregmisc/code/1890 Author: warnes Date: 2014-09-17 21:34:28 +0000 (Wed, 17 Sep 2014) Log Message: ----------- heatmap.2 was not properly handling integer vectors for Rowv and Colv. Modified Paths: -------------- trunk/gplots/R/heatmap.2.R Modified: trunk/gplots/R/heatmap.2.R =================================================================== --- trunk/gplots/R/heatmap.2.R 2014-09-17 13:53:34 UTC (rev 1889) +++ trunk/gplots/R/heatmap.2.R 2014-09-17 21:34:28 UTC (rev 1890) @@ -114,8 +114,8 @@ Rowv <- FALSE if ( is.null(Colv) || is.na(Colv) ) Colv <- FALSE - else if( Colv=="Rowv" && !isTRUE(Rowv) ) - Colv <- FALSE + else if( all(Colv=="Rowv") ) + Colv <- Rowv if(length(di <- dim(x)) != 2 || !is.numeric(x)) @@ -135,8 +135,15 @@ if(!inherits(Rowv, "dendrogram")) { ## Check if Rowv and dendrogram arguments are consistent - if ( ( (!isTRUE(Rowv)) || (is.null(Rowv))) && - (dendrogram %in% c("both","row") ) ) + if ( + ( + ( is.logical(Rowv) && !isTRUE(Rowv) ) + || + ( is.null(Rowv) ) + ) + && + ( dendrogram %in% c("both","row") ) + ) { if (is.logical(Colv) && (Colv)) dendrogram <- "column" @@ -151,8 +158,14 @@ if(!inherits(Colv, "dendrogram")) { ## Check if Colv and dendrogram arguments are consistent - if ( ( (!isTRUE(Colv)) || (is.null(Colv))) - && (dendrogram %in% c("both","column")) ) + if ( + ( + (is.logical(Colv) && !isTRUE(Colv) ) + || + (is.null(Colv)) + ) + && + ( dendrogram %in% c("both","column")) ) { if (is.logical(Rowv) && (Rowv)) dendrogram <- "row" @@ -182,9 +195,10 @@ } else if (is.integer(Rowv)) { ## Compute dendrogram and do reordering based on given vector + browser() hcr <- hclustfun(distfun(x)) ddr <- as.dendrogram(hcr) - ddr <- reorderfun(ddr, Rowv) + ddr <- reorderfun(ddr, Rowv) rowInd <- order.dendrogram(ddr) if(nr != length(rowInd)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-17 13:53:42
|
Revision: 1889 http://sourceforge.net/p/r-gregmisc/code/1889 Author: warnes Date: 2014-09-17 13:53:34 +0000 (Wed, 17 Sep 2014) Log Message: ----------- key.title=NA was not being honored when density.info=NA. Modified Paths: -------------- trunk/gplots/R/heatmap.2.R Modified: trunk/gplots/R/heatmap.2.R =================================================================== --- trunk/gplots/R/heatmap.2.R 2014-09-16 18:11:13 UTC (rev 1888) +++ trunk/gplots/R/heatmap.2.R 2014-09-17 13:53:34 UTC (rev 1889) @@ -667,7 +667,8 @@ mtext(side=2,key.ylab, line=par("mgp")[1], padj=0.5) } else - title("Color Key") + if (is.null(key.title)) + title("Color Key") if(trace %in% c("both","column") ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-16 18:11:16
|
Revision: 1888 http://sourceforge.net/p/r-gregmisc/code/1888 Author: warnes Date: 2014-09-16 18:11:13 +0000 (Tue, 16 Sep 2014) Log Message: ----------- Add plotNode code to allow modificaiton of algorithm from recursive to iterative for the purpose of avoiding node stack overflow. Added Paths: ----------- trunk/gplots/R/plotNode.R Added: trunk/gplots/R/plotNode.R =================================================================== --- trunk/gplots/R/plotNode.R (rev 0) +++ trunk/gplots/R/plotNode.R 2014-09-16 18:11:13 UTC (rev 1888) @@ -0,0 +1,187 @@ +plot.dendrogram <- stats:::plot.dendrogram +environment(plot.dendrogram) <- .GlobalEnv + +plotNodeLimit <- stats:::plotNodeLimit +environment(plotNodeLimit) <- .GlobalEnv + +.memberDend <- stats:::.memberDend +environment(.memberDend) <- .GlobalEnv + +.midDend <- stats:::.midDend +environment(.midDend) <- .GlobalEnv + +plotNode <- + function (x1, x2, subtree, type, center, leaflab, dLeaf, nodePar, + edgePar, horiz = FALSE) +{ + inner <- !is.leaf(subtree) && x1 != x2 + yTop <- attr(subtree, "height") + bx <- plotNodeLimit(x1, x2, subtree, center) + xTop <- bx$x + hasP <- !is.null(nPar <- attr(subtree, "nodePar")) + if (!hasP) + nPar <- nodePar + if (getOption("verbose")) { + cat(if (inner) + "inner node" + else "leaf", ":") + if (!is.null(nPar)) { + cat(" with node pars\n") + str(nPar) + } + cat(if (inner) + paste(" height", formatC(yTop), "; "), "(x1,x2)= (", + formatC(x1, width = 4), ",", formatC(x2, width = 4), + ")", "--> xTop=", formatC(xTop, width = 8), "\n", + sep = "") + } + Xtract <- function(nam, L, default, indx) rep(if (nam %in% + names(L)) L[[nam]] else default, length.out = indx)[indx] + asTxt <- function(x) if (is.character(x) || is.expression( + is.null(x)) + x + else as.character(x) + i <- if (inner || hasP) + 1 + else 2 + if (!is.null(nPar)) { + pch <- Xtract("pch", nPar, default = 1L:2, i) + cex <- Xtract("cex", nPar, default = c(1, 1), i) + col <- Xtract("col", nPar, default = par("col"), i) + bg <- Xtract("bg", nPar, default = par("bg"), i) + points(if (horiz) + cbind(yTop, xTop) + else cbind(xTop, yTop), pch = pch, bg = bg, col = col, + cex = cex) + } + if (leaflab == "textlike") + p.col <- Xtract("p.col", nPar, default = "white", i) + lab.col <- Xtract("lab.col", nPar, default = par("col"), + i) + lab.cex <- Xtract("lab.cex", nPar, default = c(1, 1), i) + lab.font <- Xtract("lab.font", nPar, default = par("font"), + i) + lab.xpd <- Xtract("xpd", nPar, default = c(TRUE, TRUE), i) + if (is.leaf(subtree)) { + if (leaflab == "perpendicular") { + if (horiz) { + X <- yTop + dLeaf * lab.cex + Y <- xTop + srt <- 0 + adj <- c(0, 0.5) + } + else { + Y <- yTop - dLeaf * lab.cex + X <- xTop + srt <- 90 + adj <- 1 + } + nodeText <- asTxt(attr(subtree, "label")) + text(X, Y, nodeText, xpd = lab.xpd, srt = srt, adj = adj, + cex = lab.cex, col = lab.col, font = lab.font) + } + } + else if (inner) { + segmentsHV <- function(x0, y0, x1, y1) { + if (horiz) + segments(y0, x0, y1, x1, col = col, lty = lty, + lwd = lwd) + else segments(x0, y0, x1, y1, col = col, lty = lty, + lwd = lwd) + } + for (k in seq_along(subtree)) { + child <- subtree[[k]] + yBot <- attr(child, "height") + if (getOption("verbose")) + cat("ch.", k, "@ h=", yBot, "; ") + if (is.null(yBot)) + yBot <- 0 + xBot <- if (center) + mean(bx$limit[k:(k + 1)]) + else bx$limit[k] + .midDend(child) + hasE <- !is.null(ePar <- attr(child, "edgePar")) + if (!hasE) + ePar <- edgePar + i <- if (!is.leaf(child) || hasE) + 1 + else 2 + col <- Xtract("col", ePar, default = par("col"), + i) + lty <- Xtract("lty", ePar, default = par("lty"), + i) + lwd <- Xtract("lwd", ePar, default = par("lwd"), + i) + if (type == "triangle") { + segmentsHV(xTop, yTop, xBot, yBot) + } + else { + segmentsHV(xTop, yTop, xBot, yTop) + segmentsHV(xBot, yTop, xBot, yBot) + } + vln <- NULL + if (is.leaf(child) && leaflab == "textlike") { + nodeText <- asTxt(attr(child, "label")) + if (getOption("verbose")) + cat("-- with \"label\"", format(nodeText)) + hln <- 0.6 * strwidth(nodeText, cex = lab.cex)/2 + vln <- 1.5 * strheight(nodeText, cex = lab.cex)/2 + rect(xBot - hln, yBot, xBot + hln, yBot + 2 * + vln, col = p.col) + text(xBot, yBot + vln, nodeText, xpd = lab.xpd, + cex = lab.cex, col = lab.col, font = lab.font) + } + if (!is.null(attr(child, "edgetext"))) { + edgeText <- asTxt(attr(child, "edgetext")) + if (getOption("verbose")) + cat("-- with \"edgetext\"", format(edgeText)) + if (!is.null(vln)) { + mx <- if (type == "triangle") + (xTop + xBot + ((xTop - xBot)/(yTop - yBot)) * + vln)/2 + else xBot + my <- (yTop + yBot + 2 * vln)/2 + } + else { + mx <- if (type == "triangle") + (xTop + xBot)/2 + else xBot + my <- (yTop + yBot)/2 + } + p.col <- Xtract("p.col", ePar, default = "white", + i) + p.border <- Xtract("p.border", ePar, default = par("fg"), + i) + p.lwd <- Xtract("p.lwd", ePar, default = lwd, + i) + p.lty <- Xtract("p.lty", ePar, default = lty, + i) + t.col <- Xtract("t.col", ePar, default = col, + i) + t.cex <- Xtract("t.cex", ePar, default = 1, i) + t.font <- Xtract("t.font", ePar, default = par("font"), + i) + vlm <- strheight(c(edgeText, "h"), cex = t.cex)/2 + hlm <- strwidth(c(edgeText, "m"), cex = t.cex)/2 + hl3 <- c(hlm[1L], hlm[1L] + hlm[2L], hlm[1L]) + if (horiz) { + polygon(my + c(-hl3, hl3), mx + sum(vlm) * + c(-1L:1L, 1L:-1L), col = p.col, border = p.border, + lty = p.lty, lwd = p.lwd) + text(my, mx, edgeText, cex = t.cex, col = t.col, + font = t.font) + } + else { + polygon(mx + c(-hl3, hl3), my + sum(vlm) * + c(-1L:1L, 1L:-1L), col = p.col, border = p.border, + lty = p.lty, lwd = p.lwd) + text(mx, my, edgeText, cex = t.cex, col = t.col, + font = t.font) + } + } + plotNode(bx$limit[k], bx$limit[k + 1], subtree = child, + type, center, leaflab, dLeaf, nodePar, edgePar, + horiz) + } + } + invisible() +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-16 18:08:50
|
Revision: 1887 http://sourceforge.net/p/r-gregmisc/code/1887 Author: warnes Date: 2014-09-16 18:08:39 +0000 (Tue, 16 Sep 2014) Log Message: ----------- - Correct statement of default color for 'notecol' argumemt to 'heatmap.2'. - Modify default arguments to 'symbreaks' and 'symkey' to make the logic more evident by replacing min() with any(). (The previous code executed properly, but relied on implicit coercion of logicals to numeric, obscuring the intent.) Modified Paths: -------------- trunk/gplots/R/heatmap.2.R trunk/gplots/man/heatmap.2.Rd Modified: trunk/gplots/R/heatmap.2.R =================================================================== --- trunk/gplots/R/heatmap.2.R 2014-09-13 01:17:27 UTC (rev 1886) +++ trunk/gplots/R/heatmap.2.R 2014-09-16 18:08:39 UTC (rev 1887) @@ -21,7 +21,7 @@ ## mapping data to colors breaks, - symbreaks=min(x < 0, na.rm=TRUE) || scale!="none", + symbreaks=any(x < 0, na.rm=TRUE) || scale!="none", ## colors col="heat.colors", @@ -65,7 +65,7 @@ keysize = 1.5, density.info=c("histogram","density","none"), denscol=tracecol, - symkey = min(x < 0, na.rm=TRUE) || symbreaks, + symkey = any(x < 0, na.rm=TRUE) || symbreaks, densadj = 0.25, key.title = NULL, key.xlab = NULL, @@ -555,7 +555,7 @@ if( dendrogram %in% c("both","column") ) { - plot(ddc, axes = FALSE, xaxs = "i", leaflab = "none") + plot.dendrogram(ddc, axes = FALSE, xaxs = "i", leaflab = "none") } else plot.new() Modified: trunk/gplots/man/heatmap.2.Rd =================================================================== --- trunk/gplots/man/heatmap.2.Rd 2014-09-13 01:17:27 UTC (rev 1886) +++ trunk/gplots/man/heatmap.2.Rd 2014-09-16 18:08:39 UTC (rev 1887) @@ -33,7 +33,7 @@ # mapping data to colors breaks, - symbreaks=min(x < 0, na.rm=TRUE) || scale!="none", + symbreaks=any(x < 0, na.rm=TRUE) || scale!="none", # colors col="heat.colors", @@ -77,7 +77,7 @@ keysize = 1.5, density.info=c("histogram","density","none"), denscol=tracecol, - symkey = min(x < 0, na.rm=TRUE) || symbreaks, + symkey = any(x < 0, na.rm=TRUE) || symbreaks, densadj = 0.25, key.title = NULL, key.xlab = NULL, @@ -126,7 +126,7 @@ warning is issued and Rowv (or Colv) arguments are honoured.} \item{reorderfun}{\code{function(d, w)} of dendrogram and weights for reordering the row and column dendrograms. The default uses - \code{\link{stats}{reorder.dendrogram}}. + \code{\link{stats}{reorder.dendrogram}} }. \item{symm}{logical indicating if \code{x} should be treated \bold{symm}etrically; can only be true when \code{x} is a square matrix.} % data scaling @@ -162,7 +162,7 @@ \item{notecex}{(optional) numeric scaling factor for \code{cellnote} items.} \item{notecol}{(optional) character string specifying the color for - \code{cellnote} text. Defaults to "green".} + \code{cellnote} text. Defaults to "cyan".} \item{na.color}{Color to use for missing value (\code{NA}). Defaults to the plot background color.} % level trace This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-13 01:17:39
|
Revision: 1886 http://sourceforge.net/p/r-gregmisc/code/1886 Author: warnes Date: 2014-09-13 01:17:27 +0000 (Sat, 13 Sep 2014) Log Message: ----------- Update for changes in latest version of Hmisc (3.14-5). Modified Paths: -------------- trunk/SASxport/tests/Alfalfa_Test.Rout.save trunk/SASxport/tests/Theoph.Rout.save trunk/SASxport/tests/cars.Rout.save trunk/SASxport/tests/testDates.Rout.save trunk/SASxport/tests/testDuplicateNames.Rout.save trunk/SASxport/tests/testEmpty.Rout.save trunk/SASxport/tests/testExamples.Rout.save trunk/SASxport/tests/testManyNames.Rout.save trunk/SASxport/tests/testNegative.Rout.save trunk/SASxport/tests/testNumeric.Rout.save trunk/SASxport/tests/testUnnamedComponents.Rout.save trunk/SASxport/tests/test_as_is.Rout.save trunk/SASxport/tests/test_fields.Rout.save trunk/SASxport/tests/xport.Rout.save trunk/SASxport/tests/xxx.Rout.save Modified: trunk/SASxport/tests/Alfalfa_Test.Rout.save =================================================================== --- trunk/SASxport/tests/Alfalfa_Test.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/Alfalfa_Test.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -859,6 +859,7 @@ > ## Test that the files are identical > stopifnot( all(a.1 == a.2) ) > +> > proc.time() user system elapsed - 0.518 0.053 0.561 + 0.531 0.054 0.576 Modified: trunk/SASxport/tests/Theoph.Rout.save =================================================================== --- trunk/SASxport/tests/Theoph.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/Theoph.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -57,4 +57,4 @@ > > proc.time() user system elapsed - 0.584 0.038 0.610 + 0.652 0.037 0.680 Modified: trunk/SASxport/tests/cars.Rout.save =================================================================== --- trunk/SASxport/tests/cars.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/cars.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -525,4 +525,4 @@ > > proc.time() user system elapsed - 0.483 0.048 0.533 + 0.507 0.047 0.544 Modified: trunk/SASxport/tests/testDates.Rout.save =================================================================== --- trunk/SASxport/tests/testDates.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testDates.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -76,4 +76,4 @@ > > proc.time() user system elapsed - 0.472 0.034 0.496 + 0.507 0.035 0.532 Modified: trunk/SASxport/tests/testDuplicateNames.Rout.save =================================================================== --- trunk/SASxport/tests/testDuplicateNames.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testDuplicateNames.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -84,4 +84,4 @@ > > proc.time() user system elapsed - 0.493 0.036 0.518 + 0.515 0.037 0.542 Modified: trunk/SASxport/tests/testEmpty.Rout.save =================================================================== --- trunk/SASxport/tests/testEmpty.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testEmpty.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -84,4 +84,4 @@ > > proc.time() user system elapsed - 0.515 0.038 0.541 + 0.552 0.036 0.579 Modified: trunk/SASxport/tests/testExamples.Rout.save =================================================================== --- trunk/SASxport/tests/testExamples.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testExamples.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -477,8 +477,8 @@ 1 1 1 blue -------------------------------------------------------------------------------- AGE : Age at Beginning of Study - n missing unique Mean - 2 0 2 30.5 + n missing unique Info Mean + 2 0 2 1 30.5 30 (1, 50%), 31 (1, 50%) -------------------------------------------------------------------------------- @@ -491,15 +491,15 @@ DT1 Format:day mon year h:m:s n missing unique 2 0 2 - Mean -(18 Apr 2002 09:36:35) + Info Mean + 1 (18 Apr 2002 09:36:35) (03 Jun 2002 09:42:07) (1, 50%) (03 Mar 2002 09:31:02) (1, 50%) -------------------------------------------------------------------------------- T1 Format:h:m:s - n missing unique Mean - 2 0 2 :01: + n missing unique Info Mean + 2 0 2 1 :01: 11:13:45 (1, 50%), 11:14:13 (1, 50%) -------------------------------------------------------------------------------- @@ -515,8 +515,8 @@ 1 1 1 blue -------------------------------------------------------------------------------- AGE : Age at Beginning of Study - n missing unique Mean - 2 0 2 30.5 + n missing unique Info Mean + 2 0 2 1 30.5 30 (1, 50%), 31 (1, 50%) -------------------------------------------------------------------------------- @@ -529,15 +529,15 @@ DT1 Format:day mon year h:m:s n missing unique 2 0 2 - Mean -(18 Apr 2002 09:36:35) + Info Mean + 1 (18 Apr 2002 09:36:35) (03 Jun 2002 09:42:07) (1, 50%) (03 Mar 2002 09:31:02) (1, 50%) -------------------------------------------------------------------------------- T1 Format:h:m:s - n missing unique Mean - 2 0 2 :01: + n missing unique Info Mean + 2 0 2 1 :01: 11:13:45 (1, 50%), 11:14:13 (1, 50%) -------------------------------------------------------------------------------- @@ -548,55 +548,55 @@ 6 Variables 100 Observations -------------------------------------------------------------------------------- X3 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5131 0.05585 0.13304 0.26428 0.51257 0.80719 0.93059 - .95 -0.96426 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5131 0.05585 0.13304 0.26428 0.51257 0.80719 + .90 .95 +0.93059 0.96426 lowest : 0.00576 0.01524 0.02380 0.02627 0.05351 highest: 0.96948 0.97473 0.98010 0.98096 0.99390 -------------------------------------------------------------------------------- X4 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5119 0.06694 0.09393 0.22310 0.49638 0.82109 0.92206 - .95 -0.94963 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5119 0.06694 0.09393 0.22310 0.49638 0.82109 + .90 .95 +0.92206 0.94963 lowest : 0.02636 0.02890 0.02926 0.03010 0.05395 highest: 0.95790 0.96828 0.97047 0.97466 0.98267 -------------------------------------------------------------------------------- X5 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4888 0.04286 0.06765 0.19898 0.46766 0.77899 0.89237 - .95 -0.91886 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4888 0.04286 0.06765 0.19898 0.46766 0.77899 + .90 .95 +0.89237 0.91886 lowest : 0.004134 0.007872 0.008811 0.038577 0.039260 highest: 0.933789 0.975597 0.984074 0.996114 0.997253 -------------------------------------------------------------------------------- X6 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4987 0.09022 0.18649 0.26865 0.46423 0.72667 0.85553 - .95 -0.93149 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4987 0.09022 0.18649 0.26865 0.46423 0.72667 + .90 .95 +0.85553 0.93149 lowest : 0.01010 0.01943 0.03064 0.05931 0.08775 highest: 0.93330 0.96090 0.97310 0.97840 0.99511 -------------------------------------------------------------------------------- X7 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5533 0.0850 0.1474 0.3313 0.5666 0.8120 0.9176 - .95 - 0.9517 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5533 0.0850 0.1474 0.3313 0.5666 0.8120 + .90 .95 + 0.9176 0.9517 lowest : 0.04201 0.04716 0.04986 0.05864 0.07641 highest: 0.96377 0.97244 0.97413 0.99318 0.99791 -------------------------------------------------------------------------------- X8 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4809 0.04251 0.06831 0.27122 0.49223 0.71333 0.87322 - .95 -0.91886 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4809 0.04251 0.06831 0.27122 0.49223 0.71333 + .90 .95 +0.87322 0.91886 lowest : 0.007269 0.010586 0.013044 0.018595 0.039906 highest: 0.930491 0.935669 0.936941 0.958679 0.959636 @@ -632,32 +632,32 @@ blue (1, 33%), green (1, 33%), purple (1, 33%) -------------------------------------------------------------------------------- MIN - n missing unique Mean - 3 0 1 1 + n missing unique Info Mean + 3 0 1 0 1 -------------------------------------------------------------------------------- MAX - n missing unique Mean - 3 0 1 40 + n missing unique Info Mean + 3 0 1 0 40 -------------------------------------------------------------------------------- DEFAULT - n missing unique Mean - 3 0 1 6 + n missing unique Info Mean + 3 0 1 0 6 -------------------------------------------------------------------------------- LENGTH - n missing unique Mean - 3 0 1 6 + n missing unique Info Mean + 3 0 1 0 6 -------------------------------------------------------------------------------- FUZZ - n missing unique Mean - 3 0 1 1e-12 + n missing unique Info Mean + 3 0 1 0 1e-12 -------------------------------------------------------------------------------- MULT - n missing unique Mean - 3 0 1 0 + n missing unique Info Mean + 3 0 1 0 0 -------------------------------------------------------------------------------- NOEDIT - n missing unique Mean - 3 0 1 0 + n missing unique Info Mean + 3 0 1 0 0 -------------------------------------------------------------------------------- TYPE n missing unique value @@ -968,4 +968,4 @@ > > proc.time() user system elapsed - 0.709 0.045 0.744 + 0.753 0.047 0.791 Modified: trunk/SASxport/tests/testManyNames.Rout.save =================================================================== --- trunk/SASxport/tests/testManyNames.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testManyNames.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -109,4 +109,4 @@ > > proc.time() user system elapsed - 4.290 0.056 4.341 + 4.509 0.056 4.571 Modified: trunk/SASxport/tests/testNegative.Rout.save =================================================================== --- trunk/SASxport/tests/testNegative.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testNegative.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -62,4 +62,4 @@ > > proc.time() user system elapsed - 0.513 0.036 0.538 + 0.534 0.037 0.561 Modified: trunk/SASxport/tests/testNumeric.Rout.save =================================================================== --- trunk/SASxport/tests/testNumeric.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testNumeric.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -101,4 +101,4 @@ > > proc.time() user system elapsed - 0.560 0.034 0.584 + 0.603 0.035 0.631 Modified: trunk/SASxport/tests/testUnnamedComponents.Rout.save =================================================================== --- trunk/SASxport/tests/testUnnamedComponents.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/testUnnamedComponents.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -184,8 +184,8 @@ 1 1 1 blue -------------------------------------------------------------------------------- AGE : Age at Beginning of Study - n missing unique Mean - 2 0 2 30.5 + n missing unique Info Mean + 2 0 2 1 30.5 30 (1, 50%), 31 (1, 50%) -------------------------------------------------------------------------------- @@ -198,15 +198,15 @@ DT1 Format:day mon year h:m:s n missing unique 2 0 2 - Mean -(18 Apr 2002 09:36:35) + Info Mean + 1 (18 Apr 2002 09:36:35) (03 Jun 2002 09:42:07) (1, 50%) (03 Mar 2002 09:31:02) (1, 50%) -------------------------------------------------------------------------------- T1 Format:h:m:s - n missing unique Mean - 2 0 2 :01: + n missing unique Info Mean + 2 0 2 1 :01: 11:13:45 (1, 50%), 11:14:13 (1, 50%) -------------------------------------------------------------------------------- @@ -222,8 +222,8 @@ 1 1 1 blue -------------------------------------------------------------------------------- AGE : Age at Beginning of Study - n missing unique Mean - 2 0 2 30.5 + n missing unique Info Mean + 2 0 2 1 30.5 30 (1, 50%), 31 (1, 50%) -------------------------------------------------------------------------------- @@ -236,15 +236,15 @@ DT1 Format:day mon year h:m:s n missing unique 2 0 2 - Mean -(18 Apr 2002 09:36:35) + Info Mean + 1 (18 Apr 2002 09:36:35) (03 Jun 2002 09:42:07) (1, 50%) (03 Mar 2002 09:31:02) (1, 50%) -------------------------------------------------------------------------------- T1 Format:h:m:s - n missing unique Mean - 2 0 2 :01: + n missing unique Info Mean + 2 0 2 1 :01: 11:13:45 (1, 50%), 11:14:13 (1, 50%) -------------------------------------------------------------------------------- @@ -255,55 +255,55 @@ 6 Variables 100 Observations -------------------------------------------------------------------------------- X3 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5131 0.05585 0.13304 0.26428 0.51257 0.80719 0.93059 - .95 -0.96426 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5131 0.05585 0.13304 0.26428 0.51257 0.80719 + .90 .95 +0.93059 0.96426 lowest : 0.00576 0.01524 0.02380 0.02627 0.05351 highest: 0.96948 0.97473 0.98010 0.98096 0.99390 -------------------------------------------------------------------------------- X4 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5119 0.06694 0.09393 0.22310 0.49638 0.82109 0.92206 - .95 -0.94963 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5119 0.06694 0.09393 0.22310 0.49638 0.82109 + .90 .95 +0.92206 0.94963 lowest : 0.02636 0.02890 0.02926 0.03010 0.05395 highest: 0.95790 0.96828 0.97047 0.97466 0.98267 -------------------------------------------------------------------------------- X5 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4888 0.04286 0.06765 0.19898 0.46766 0.77899 0.89237 - .95 -0.91886 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4888 0.04286 0.06765 0.19898 0.46766 0.77899 + .90 .95 +0.89237 0.91886 lowest : 0.004134 0.007872 0.008811 0.038577 0.039260 highest: 0.933789 0.975597 0.984074 0.996114 0.997253 -------------------------------------------------------------------------------- X6 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4987 0.09022 0.18649 0.26865 0.46423 0.72667 0.85553 - .95 -0.93149 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4987 0.09022 0.18649 0.26865 0.46423 0.72667 + .90 .95 +0.85553 0.93149 lowest : 0.01010 0.01943 0.03064 0.05931 0.08775 highest: 0.93330 0.96090 0.97310 0.97840 0.99511 -------------------------------------------------------------------------------- X7 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.5533 0.0850 0.1474 0.3313 0.5666 0.8120 0.9176 - .95 - 0.9517 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.5533 0.0850 0.1474 0.3313 0.5666 0.8120 + .90 .95 + 0.9176 0.9517 lowest : 0.04201 0.04716 0.04986 0.05864 0.07641 highest: 0.96377 0.97244 0.97413 0.99318 0.99791 -------------------------------------------------------------------------------- X8 - n missing unique Mean .05 .10 .25 .50 .75 .90 - 100 0 100 0.4809 0.04251 0.06831 0.27122 0.49223 0.71333 0.87322 - .95 -0.91886 + n missing unique Info Mean .05 .10 .25 .50 .75 + 100 0 100 1 0.4809 0.04251 0.06831 0.27122 0.49223 0.71333 + .90 .95 +0.87322 0.91886 lowest : 0.007269 0.010586 0.013044 0.018595 0.039906 highest: 0.930491 0.935669 0.936941 0.958679 0.959636 @@ -339,32 +339,32 @@ blue (1, 33%), green (1, 33%), purple (1, 33%) -------------------------------------------------------------------------------- MIN - n missing unique Mean - 3 0 1 1 + n missing unique Info Mean + 3 0 1 0 1 -------------------------------------------------------------------------------- MAX - n missing unique Mean - 3 0 1 40 + n missing unique Info Mean + 3 0 1 0 40 -------------------------------------------------------------------------------- DEFAULT - n missing unique Mean - 3 0 1 6 + n missing unique Info Mean + 3 0 1 0 6 -------------------------------------------------------------------------------- LENGTH - n missing unique Mean - 3 0 1 6 + n missing unique Info Mean + 3 0 1 0 6 -------------------------------------------------------------------------------- FUZZ - n missing unique Mean - 3 0 1 1e-12 + n missing unique Info Mean + 3 0 1 0 1e-12 -------------------------------------------------------------------------------- MULT - n missing unique Mean - 3 0 1 0 + n missing unique Info Mean + 3 0 1 0 0 -------------------------------------------------------------------------------- NOEDIT - n missing unique Mean - 3 0 1 0 + n missing unique Info Mean + 3 0 1 0 0 -------------------------------------------------------------------------------- TYPE n missing unique value @@ -2130,4 +2130,4 @@ > > proc.time() user system elapsed - 1.561 0.059 1.615 + 1.590 0.063 1.648 Modified: trunk/SASxport/tests/test_as_is.Rout.save =================================================================== --- trunk/SASxport/tests/test_as_is.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/test_as_is.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -85,4 +85,4 @@ > > proc.time() user system elapsed - 0.424 0.033 0.445 + 0.451 0.033 0.474 Modified: trunk/SASxport/tests/test_fields.Rout.save =================================================================== --- trunk/SASxport/tests/test_fields.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/test_fields.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -46,4 +46,4 @@ > > proc.time() user system elapsed - 0.378 0.035 0.406 + 0.450 0.033 0.472 Modified: trunk/SASxport/tests/xport.Rout.save =================================================================== --- trunk/SASxport/tests/xport.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/xport.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -120,4 +120,4 @@ > q() > proc.time() user system elapsed - 0.427 0.033 0.448 + 0.592 0.041 1.087 Modified: trunk/SASxport/tests/xxx.Rout.save =================================================================== --- trunk/SASxport/tests/xxx.Rout.save 2014-09-07 23:19:44 UTC (rev 1885) +++ trunk/SASxport/tests/xxx.Rout.save 2014-09-13 01:17:27 UTC (rev 1886) @@ -237,4 +237,4 @@ > > proc.time() user system elapsed - 0.434 0.041 0.464 + 0.470 0.043 0.501 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-09-07 23:19:51
|
Revision: 1885 http://sourceforge.net/p/r-gregmisc/code/1885 Author: warnes Date: 2014-09-07 23:19:44 +0000 (Sun, 07 Sep 2014) Log Message: ----------- Remove hexbin Removed Paths: ------------- trunk/hexbin/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-08-28 15:01:54
|
Revision: 1883 http://sourceforge.net/p/r-gregmisc/code/1883 Author: warnes Date: 2014-08-28 15:01:51 +0000 (Thu, 28 Aug 2014) Log Message: ----------- Everything works now! Modified Paths: -------------- trunk/gdata/R/trim.R trunk/gdata/inst/NEWS trunk/gdata/inst/perl/xls2csv.pl trunk/gdata/inst/xls/ExampleExcelFile.xls trunk/gdata/inst/xls/ExampleExcelFile.xlsx trunk/gdata/inst/xls/ExampleExcelFile_1900.xls trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx trunk/gdata/inst/xls/ExampleExcelFile_1904.xls trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx trunk/gdata/tests/test.read.xls.R trunk/gdata/tests/test.read.xls.Rout.save trunk/gdata/tests/tests.write.fwf.Rout.save Modified: trunk/gdata/R/trim.R =================================================================== --- trunk/gdata/R/trim.R 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/R/trim.R 2014-08-28 15:01:51 UTC (rev 1883) @@ -19,7 +19,7 @@ if(recode.factor) { dots <- list(x=s, ...) if(is.null(dots$sort)) dots$sort <- sort - s <- do.call(what=reorder.factor, args=dots) + s <- do.call(what="reorder.factor", args=dots) } s } Modified: trunk/gdata/inst/NEWS =================================================================== --- trunk/gdata/inst/NEWS 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/inst/NEWS 2014-08-28 15:01:51 UTC (rev 1883) @@ -6,6 +6,10 @@ - read.xls() can now properly process XLSX files with up to 16385 columns (the maximum generated by Microsoft Excel). +- read.xls() now properly handles XLS/XLSX files that use 1904-01-01 + as the reference value for dates instead of 1900-01-01 (the + default for MS-Excel files created on the Mac). + Other changes: - Updated perl libraries and code underlying read.xls() to the latest Modified: trunk/gdata/inst/perl/xls2csv.pl =================================================================== --- trunk/gdata/inst/perl/xls2csv.pl 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/inst/perl/xls2csv.pl 2014-08-28 15:01:51 UTC (rev 1883) @@ -27,9 +27,10 @@ my($row, $col, $sheet, $cell, $usage, $targetfile,$basename, $sheetnumber, $filename, $volume, $directories, $whoami, - $sep, $sepName, $sepLabel, $sepExt, + $sep, $sepName, $sepLabel, $sepExt, $skipBlankLines, %switches, - $parser, $oBook, $formatter + $parser, $oBook, $formatter, + $using_1904_date ); ## @@ -141,6 +142,7 @@ open(FH, "<$ARGV[0]") or die "Unable to open file '$ARGV[0]'.\n"; close(FH); +print "\n"; print "Loading '$ARGV[0]'...\n"; ## First try as a Excel 2007+ 'xml' file eval @@ -158,9 +160,26 @@ } print "Done.\n"; +## Does this file use 1904-01-01 as the reference date instead of +## 1900-01-01? +$using_1904_date = ( $oBook->using_1904_date() == 1 ) || # ParseExcel + ( $oBook->{Flag1904} == 1 ); # ParseXLSX + + +## Show the user some summary information before we start extracting +## date print "\n"; print "Orignal Filename: ", $ARGV[0], "\n"; print "Number of Sheets: ", $oBook->{SheetCount} , "\n"; +if($using_1904_date) + { + print "Date reference : 1904-01-01\n"; + } +else + { + print "Date reference : 1900-01-01\n"; + } + print "\n"; ## Get list all worksheets in the file @@ -245,14 +264,35 @@ my $format = $formatter->FmtString($cell, $oBook); if( defined($cell) ) { - if ($cell->type() eq "Date" && $oBook->{Flag1904} ) + if ($cell->type() eq "Date") # && $using_1904_date ) { + my $is_date = ( $format =~ m/y/ && + $format =~ m/m/ && + $format =~ m/d/ ); + + my $is_time = ( $format =~ m/h[:\]]*m/ || + $format =~ m/m[:\]]*s/ ); + + + if($is_date && $is_time) + { + $format = "yyyy-mm-dd hh:mm:ss.00"; + } + elsif ($is_date) + { + $format = "yyyy-mm-dd"; + } + elsif ($is_time) + { + $format = "hh:mm:ss.00" + } + $_ = ExcelFmt($format, $cell->unformatted(), - $oBook->{Flag1904}); + $using_1904_date); } else - { + { $_=$cell->value(); } @@ -266,7 +306,7 @@ # they are used as field delimiters s/\"/\\\"/g; } - else + else { $_ = ''; } @@ -291,7 +331,7 @@ close OutFile; - print " (Ignored $cumulativeBlankLines blank lines.)\n" + print " (Ignored $cumulativeBlankLines blank lines.)\n" if $skipBlankLines; print "\n"; } Modified: trunk/gdata/inst/xls/ExampleExcelFile.xls =================================================================== (Binary files differ) Modified: trunk/gdata/inst/xls/ExampleExcelFile.xlsx =================================================================== (Binary files differ) Modified: trunk/gdata/inst/xls/ExampleExcelFile_1900.xls =================================================================== (Binary files differ) Modified: trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx =================================================================== (Binary files differ) Modified: trunk/gdata/inst/xls/ExampleExcelFile_1904.xls =================================================================== (Binary files differ) Modified: trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx =================================================================== (Binary files differ) Modified: trunk/gdata/tests/test.read.xls.R =================================================================== --- trunk/gdata/tests/test.read.xls.R 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/tests/test.read.xls.R 2014-08-28 15:01:51 UTC (rev 1883) @@ -23,19 +23,19 @@ exampleFile <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile.xls') -exampleFile2007 <- file.path(path.package('gdata'),'xls', +exampleFileX <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile.xlsx') # see the number and names of sheets: sheetCount(exampleFile) if( 'XLSX' %in% xlsFormats() ) - sheetCount(exampleFile2007) + sheetCount(exampleFileX) sheetNames(exampleFile) if( 'XLSX' %in% xlsFormats() ) - sheetNames(exampleFile2007) + sheetNames(exampleFileX) example.1 <- read.xls(exampleFile, sheet=1) # default is first worksheet example.1 @@ -46,28 +46,28 @@ example.3 <- read.xls(exampleFile, sheet=3, header=FALSE) # third worksheet by number example.3 -example.4 <- read.xls(exampleFile, sheet=3, header=FALSE) # third worksheet by number +example.4 <- read.xls(exampleFile, sheet=4, header=FALSE) # fourth worksheet by number example.4 if( 'XLSX' %in% xlsFormats() ) { - example.x.1 <- read.xls(exampleFile2007, sheet=1) # default is first worksheet + example.x.1 <- read.xls(exampleFileX, sheet=1) # default is first worksheet print(example.x.1) - example.x.2 <- read.xls(exampleFile2007, sheet=2) # second worksheet by number + example.x.2 <- read.xls(exampleFileX, sheet=2) # second worksheet by number print(example.x.2) - example.x.3 <- read.xls(exampleFile2007, sheet=3, header=FALSE) # third worksheet by number + example.x.3 <- read.xls(exampleFileX, sheet=3, header=FALSE) # third worksheet by number print(example.x.3) - example.x.4 <- read.xls(exampleFile2007, sheet=3, header=FALSE) # third worksheet by number + example.x.4 <- read.xls(exampleFileX, sheet=4, header=FALSE) # fourth worksheet by number print(example.x.4) - data <- read.xls(exampleFile2007, sheet="Sheet Second") # and by name + data <- read.xls(exampleFileX, sheet="Sheet Second") # and by name print(data) # load the third worksheet, skipping the first two non-data lines... - data <- read.xls(exampleFile2007, sheet="Sheet with initial text", skip=2) + data <- read.xls(exampleFileX, sheet="Sheet with initial text", skip=2) print(data) } @@ -79,7 +79,7 @@ if( 'XLSX' %in% xlsFormats() ) { - example.x.skip <- read.xls(exampleFile2007, sheet=2, blank.lines.skip=FALSE) + example.x.skip <- read.xls(exampleFileX, sheet=2, blank.lines.skip=FALSE) example.x.skip } @@ -114,18 +114,30 @@ ## Check handling of files with dates calulcated relative to ## 1900-01-01 and 1904-01-01 -file.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xls') -file.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xls') +file.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xls' ) +file.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xls' ) +fileX.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xlsx') +fileX.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xlsx') -example.1900 <- read.xls(file.1900, sheet=3) -example.1904 <- read.xls(file.1904, sheet=3) +example.1900 <- read.xls(file.1900, sheet=3, header=FALSE) +example.1900 -stopifnot( na.omit(example.1900 == example.1904) ) +example.1904 <- read.xls(file.1904, sheet=3, header=FALSE) +example.1904 -fileX.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xlsx') -fileX.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xlsx') +exampleX.1900 <- read.xls(file.1900, sheet=3, header=FALSE) +exampleX.1900 -exampleX.1900 <- read.xls(file.1900, sheet=3) -exampleX.1904 <- read.xls(file.1904, sheet=3) +exampleX.1904 <- read.xls(file.1904, sheet=3, header=FALSE) +exampleX.1904 -stopifnot( na.omit(exampleX.1900 == exampleX.1904) ) +# all colmns should be identical +stopifnot( na.omit(example.1900 == exampleX.1900) ) +stopifnot( na.omit(example.1904 == exampleX.1904) ) + +# column 8 will differ by 1462 due to different date baselines (1900 vs 1904) +stopifnot( na.omit(example.1900 [,-8] == example.1904 [,-8]) ) +stopifnot( na.omit(exampleX.1900[,-8] == exampleX.1904[,-8]) ) + +stopifnot( na.omit(example.1900 [,8] - example.1904 [,8]) == 1462 ) +stopifnot( na.omit(exampleX.1900[,8] - exampleX.1904[,8]) == 1462 ) Modified: trunk/gdata/tests/test.read.xls.Rout.save =================================================================== --- trunk/gdata/tests/test.read.xls.Rout.save 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/tests/test.read.xls.Rout.save 2014-08-28 15:01:51 UTC (rev 1883) @@ -1,7 +1,7 @@ -R version 3.0.1 (2013-05-16) -- "Good Sport" -Copyright (C) 2013 The R Foundation for Statistical Computing -Platform: i686-pc-linux-gnu (32-bit) +R version 3.1.0 Patched (2014-05-26 r65771) -- "Spring Dance" +Copyright (C) 2014 The R Foundation for Statistical Computing +Platform: x86_64-apple-darwin13.1.0 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. @@ -507,7 +507,7 @@ > exampleFile <- file.path(path.package('gdata'),'xls', + 'ExampleExcelFile.xls') > -> exampleFile2007 <- file.path(path.package('gdata'),'xls', +> exampleFileX <- file.path(path.package('gdata'),'xls', + 'ExampleExcelFile.xlsx') > > # see the number and names of sheets: @@ -515,7 +515,7 @@ [1] 4 > > if( 'XLSX' %in% xlsFormats() ) -+ sheetCount(exampleFile2007) ++ sheetCount(exampleFileX) [1] 4 > > sheetNames(exampleFile) @@ -523,7 +523,7 @@ [3] "Sheet with a very long name!" "Sheet with initial text" > > if( 'XLSX' %in% xlsFormats() ) -+ sheetNames(exampleFile2007) ++ sheetNames(exampleFileX) [1] "Sheet First" "Sheet Second" [3] "Sheet with a very long name!" "Sheet with initial text" > @@ -548,51 +548,67 @@ > > example.3 <- read.xls(exampleFile, sheet=3, header=FALSE) # third worksheet by number > example.3 - V1 V2 V3 V4 V5 V6 -1 1 2001-01-01 1:01 0.2058182 NA A -2 2 2002-02-02 2:02 0.2910708 NA B -3 3 2003-03-03 3:03 0.3564875 -0.84147098 C -4 4 2004-04-04 4:04 0.4116363 0.70807342 -5 5 2005-05-05 5:05 0.4602234 0.50136797 A -6 6 2006-06-06 6:06 NA 0.25136984 B -7 7 2007-07-07 7:07 0.5445436 0.06318679 B -8 8 2008-08-08 8:08 0.5821416 NA C -9 9 2009-09-09 9:09 0.6174545 0.00000000 A -10 10 2010-10-10 10:10 0.6508541 0.00000000 A + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 36892.04 +2 37289.08 +3 37683.13 +4 38081.17 +5 38477.21 +6 38874.25 +7 39270.30 +8 39668.34 +9 40065.38 +10 40461.42 > -> example.4 <- read.xls(exampleFile, sheet=3, header=FALSE) # third worksheet by number +> example.4 <- read.xls(exampleFile, sheet=4, header=FALSE) # fourth worksheet by number > example.4 - V1 V2 V3 V4 V5 V6 -1 1 2001-01-01 1:01 0.2058182 NA A -2 2 2002-02-02 2:02 0.2910708 NA B -3 3 2003-03-03 3:03 0.3564875 -0.84147098 C -4 4 2004-04-04 4:04 0.4116363 0.70807342 -5 5 2005-05-05 5:05 0.4602234 0.50136797 A -6 6 2006-06-06 6:06 NA 0.25136984 B -7 7 2007-07-07 7:07 0.5445436 0.06318679 B -8 8 2008-08-08 8:08 0.5821416 NA C -9 9 2009-09-09 9:09 0.6174545 0.00000000 A -10 10 2010-10-10 10:10 0.6508541 0.00000000 A + V1 +1 This line contains text that would need to be skipped to get to the data +2 +3 +4 +5 +6 +7 + V2 V3 V4 V5 V6 V7 +1 +2 This line too! +3 D E F G Factor +4 FirstRow 1 <NA> <NA> <NA> Red +5 SecondRow 2 1 <NA> <NA> Green +6 ThirdRow 3 2 1 <NA> Red +7 FourthRow 4 3 2 1 Black > > if( 'XLSX' %in% xlsFormats() ) + { -+ example.x.1 <- read.xls(exampleFile2007, sheet=1) # default is first worksheet ++ example.x.1 <- read.xls(exampleFileX, sheet=1) # default is first worksheet + print(example.x.1) + -+ example.x.2 <- read.xls(exampleFile2007, sheet=2) # second worksheet by number ++ example.x.2 <- read.xls(exampleFileX, sheet=2) # second worksheet by number + print(example.x.2) + -+ example.x.3 <- read.xls(exampleFile2007, sheet=3, header=FALSE) # third worksheet by number ++ example.x.3 <- read.xls(exampleFileX, sheet=3, header=FALSE) # third worksheet by number + print(example.x.3) + -+ example.x.4 <- read.xls(exampleFile2007, sheet=3, header=FALSE) # third worksheet by number ++ example.x.4 <- read.xls(exampleFileX, sheet=4, header=FALSE) # fourth worksheet by number + print(example.x.4) + -+ data <- read.xls(exampleFile2007, sheet="Sheet Second") # and by name ++ data <- read.xls(exampleFileX, sheet="Sheet Second") # and by name + print(data) + + # load the third worksheet, skipping the first two non-data lines... -+ data <- read.xls(exampleFile2007, sheet="Sheet with initial text", skip=2) ++ data <- read.xls(exampleFileX, sheet="Sheet with initial text", skip=2) + print(data) + } A B C @@ -608,28 +624,44 @@ 2 SecondRow 2 1 NA NA Green 3 ThirdRow 3 2 1 NA Red 4 FourthRow 4 3 2 1 Black - V1 V2 V3 V4 V5 V6 -1 1 2001-01-01 1:01 0.2058182 NA A -2 2 2002-02-02 2:02 0.2910708 NA B -3 3 2003-03-03 3:03 0.3564875 -0.84147098 C -4 4 2004-04-04 4:04 0.4116363 0.70807342 -5 5 2005-05-05 5:05 0.4602234 0.50136797 A -6 6 2006-06-06 6:06 NA 0.25136984 B -7 7 2007-07-07 7:07 0.5445436 0.06318679 B -8 8 2008-08-08 8:08 0.5821416 NA C -9 9 2009-09-09 9:09 0.6174545 0.00000000 A -10 10 2010-10-10 10:10 0.6508541 0.00000000 A - V1 V2 V3 V4 V5 V6 -1 1 2001-01-01 1:01 0.2058182 NA A -2 2 2002-02-02 2:02 0.2910708 NA B -3 3 2003-03-03 3:03 0.3564875 -0.84147098 C -4 4 2004-04-04 4:04 0.4116363 0.70807342 -5 5 2005-05-05 5:05 0.4602234 0.50136797 A -6 6 2006-06-06 6:06 NA 0.25136984 B -7 7 2007-07-07 7:07 0.5445436 0.06318679 B -8 8 2008-08-08 8:08 0.5821416 NA C -9 9 2009-09-09 9:09 0.6174545 0.00000000 A -10 10 2010-10-10 10:10 0.6508541 0.00000000 A + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 36892.04 +2 37289.08 +3 37683.13 +4 38081.17 +5 38477.21 +6 38874.25 +7 39270.30 +8 39668.34 +9 40065.38 +10 40461.42 + V1 +1 This line contains text that would need to be skipped to get to the data +2 +3 +4 +5 +6 +7 + V2 V3 V4 V5 V6 V7 +1 +2 This line too! +3 D E F G Factor +4 FirstRow 1 <NA> <NA> <NA> Red +5 SecondRow 2 1 <NA> <NA> Green +6 ThirdRow 3 2 1 <NA> Red +7 FourthRow 4 3 2 1 Black X D E. F G Factor 1 FirstRow 1 NA NA NA Red 2 SecondRow 2 1 NA NA Green @@ -655,7 +687,7 @@ > > if( 'XLSX' %in% xlsFormats() ) + { -+ example.x.skip <- read.xls(exampleFile2007, sheet=2, blank.lines.skip=FALSE) ++ example.x.skip <- read.xls(exampleFileX, sheet=2, blank.lines.skip=FALSE) + example.x.skip + } X D E. F G Factor @@ -668,7 +700,7 @@ > > ## Check handing of fileEncoding for latin-1 characters > -> latin1File <- file.path(path.package('gdata'),'xls', 'latin-1.xls') +> latin1File <- file.path(path.package('gdata'),'xls', 'latin-1.xls' ) > latin1FileX <- file.path(path.package('gdata'),'xls', 'latin-1.xlsx') > > example.latin1 <- read.xls(latin1File, fileEncoding='latin1') @@ -679,7 +711,139 @@ + } > > +> ## Check handling of very wide file > +> wideFile <- file.path(path.package('gdata'),'xls', 'wide.xls' ) +> wideFileX <- file.path(path.package('gdata'),'xls', 'wide.xlsx') +> +> example.wide <- read.xls(wideFile) +> stopifnot(dim(example.wide)==c(0,256)) +> +> if( 'XLSX' %in% xlsFormats() ) ++ { ++ example.wide.x <- read.xls(wideFileX) ++ stopifnot(dim(example.wide.x)==c(0,16384)) ++ } +> +> ## Check handling of files with dates calulcated relative to +> ## 1900-01-01 and 1904-01-01 +> +> file.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xls' ) +> file.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xls' ) +> fileX.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xlsx') +> fileX.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xlsx') +> +> example.1900 <- read.xls(file.1900, sheet=3, header=FALSE) +> example.1900 + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 36892.04 +2 37289.08 +3 37683.13 +4 38081.17 +5 38477.21 +6 38874.25 +7 39270.30 +8 39668.34 +9 40065.38 +10 40461.42 +> +> example.1904 <- read.xls(file.1904, sheet=3, header=FALSE) +> example.1904 + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 35430.04 +2 35827.08 +3 36221.13 +4 36619.17 +5 37015.21 +6 37412.25 +7 37808.30 +8 38206.34 +9 38603.38 +10 38999.42 +> +> exampleX.1900 <- read.xls(file.1900, sheet=3, header=FALSE) +> exampleX.1900 + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 36892.04 +2 37289.08 +3 37683.13 +4 38081.17 +5 38477.21 +6 38874.25 +7 39270.30 +8 39668.34 +9 40065.38 +10 40461.42 +> +> exampleX.1904 <- read.xls(file.1904, sheet=3, header=FALSE) +> exampleX.1904 + V1 V2 V3 V4 V5 V6 V7 +1 1 2001-01-01 01:01:00.00 0.2058182 NA A 2001-01-01 01:01:01.01 +2 2 2002-02-02 02:02:00.00 0.2910708 NA B 2002-02-02 02:02:02.02 +3 3 2003-03-03 03:03:00.00 0.3564875 -0.84147098 C 2003-03-03 03:03:03.03 +4 4 2004-04-04 04:04:00.00 0.4116363 0.70807342 2004-04-04 04:04:04.04 +5 5 2005-05-05 05:05:00.00 0.4602234 0.50136797 A 2005-05-05 05:05:05.05 +6 6 2006-06-06 06:06:00.00 NA 0.25136984 B 2006-06-06 06:06:06.06 +7 7 2007-07-07 07:07:00.00 0.5445436 0.06318679 B 2007-07-07 07:07:07.07 +8 8 2008-08-08 08:08:00.00 0.5821416 NA C 2008-08-08 08:08:08.08 +9 9 2009-09-09 09:09:00.00 0.6174545 0.00000000 A 2009-09-09 09:09:09.09 +10 10 2010-10-10 10:10:00.00 0.6508541 0.00000000 A 2010-10-10 10:10:10.10 + V8 +1 35430.04 +2 35827.08 +3 36221.13 +4 36619.17 +5 37015.21 +6 37412.25 +7 37808.30 +8 38206.34 +9 38603.38 +10 38999.42 +> +> # all colmns should be identical +> stopifnot( na.omit(example.1900 == exampleX.1900) ) +> stopifnot( na.omit(example.1904 == exampleX.1904) ) +> +> # column 8 will differ by 1462 due to different date baselines (1900 vs 1904) +> stopifnot( na.omit(example.1900 [,-8] == example.1904 [,-8]) ) +> stopifnot( na.omit(exampleX.1900[,-8] == exampleX.1904[,-8]) ) +> +> stopifnot( na.omit(example.1900 [,8] - example.1904 [,8]) == 1462 ) +> stopifnot( na.omit(exampleX.1900[,8] - exampleX.1904[,8]) == 1462 ) +> > proc.time() user system elapsed - 10.072 1.468 12.094 + 12.406 0.727 13.299 Modified: trunk/gdata/tests/tests.write.fwf.Rout.save =================================================================== --- trunk/gdata/tests/tests.write.fwf.Rout.save 2014-08-28 05:22:50 UTC (rev 1882) +++ trunk/gdata/tests/tests.write.fwf.Rout.save 2014-08-28 15:01:51 UTC (rev 1883) @@ -1,7 +1,7 @@ -R version 3.0.1 (2013-05-16) -- "Good Sport" -Copyright (C) 2013 The R Foundation for Statistical Computing -Platform: i686-pc-linux-gnu (32-bit) +R version 3.1.0 Patched (2014-05-26 r65771) -- "Spring Dance" +Copyright (C) 2014 The R Foundation for Statistical Computing +Platform: x86_64-apple-darwin13.1.0 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. @@ -231,4 +231,4 @@ > > proc.time() user system elapsed - 1.464 0.152 1.631 + 0.388 0.041 0.422 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-08-28 05:22:53
|
Revision: 1882 http://sourceforge.net/p/r-gregmisc/code/1882 Author: warnes Date: 2014-08-28 05:22:50 +0000 (Thu, 28 Aug 2014) Log Message: ----------- Suppress annoying warnings in Spreadsheet::ParseXLS::FmtDefalt. Modified Paths: -------------- trunk/gdata/inst/perl/Spreadsheet/ParseExcel/FmtDefault.pm Modified: trunk/gdata/inst/perl/Spreadsheet/ParseExcel/FmtDefault.pm =================================================================== --- trunk/gdata/inst/perl/Spreadsheet/ParseExcel/FmtDefault.pm 2014-08-28 05:17:28 UTC (rev 1881) +++ trunk/gdata/inst/perl/Spreadsheet/ParseExcel/FmtDefault.pm 2014-08-28 05:22:50 UTC (rev 1882) @@ -102,15 +102,19 @@ sub FmtString { my ( $oThis, $oCell, $oBook ) = @_; + no warnings; my $sFmtStr = $oThis->FmtStringDef( $oBook->{Format}[ $oCell->{FormatNo} ]->{FmtIdx}, $oBook ); + use warnings; # Special case for cells that use Lotus123 style leading # apostrophe to designate text formatting. + no warnings; if ( $oBook->{Format}[ $oCell->{FormatNo} ]->{Key123} ) { $sFmtStr = '@'; } + use warnings; unless ( defined($sFmtStr) ) { if ( $oCell->{Type} eq 'Numeric' ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-08-28 05:17:33
|
Revision: 1881 http://sourceforge.net/p/r-gregmisc/code/1881 Author: warnes Date: 2014-08-28 05:17:28 +0000 (Thu, 28 Aug 2014) Log Message: ----------- Add tests and corresponding test files for 1900 and 1904 based XLX/XLSX files Modified Paths: -------------- trunk/gdata/tests/test.read.xls.R Added Paths: ----------- trunk/gdata/inst/xls/ExampleExcelFile_1900.xls trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx trunk/gdata/inst/xls/ExampleExcelFile_1904.xls trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx Added: trunk/gdata/inst/xls/ExampleExcelFile_1900.xls =================================================================== (Binary files differ) Index: trunk/gdata/inst/xls/ExampleExcelFile_1900.xls =================================================================== --- trunk/gdata/inst/xls/ExampleExcelFile_1900.xls 2014-08-28 04:56:57 UTC (rev 1880) +++ trunk/gdata/inst/xls/ExampleExcelFile_1900.xls 2014-08-28 05:17:28 UTC (rev 1881) Property changes on: trunk/gdata/inst/xls/ExampleExcelFile_1900.xls ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/vnd.ms-excel \ No newline at end of property Added: trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx =================================================================== (Binary files differ) Index: trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx =================================================================== --- trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx 2014-08-28 04:56:57 UTC (rev 1880) +++ trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx 2014-08-28 05:17:28 UTC (rev 1881) Property changes on: trunk/gdata/inst/xls/ExampleExcelFile_1900.xlsx ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet \ No newline at end of property Added: trunk/gdata/inst/xls/ExampleExcelFile_1904.xls =================================================================== (Binary files differ) Index: trunk/gdata/inst/xls/ExampleExcelFile_1904.xls =================================================================== --- trunk/gdata/inst/xls/ExampleExcelFile_1904.xls 2014-08-28 04:56:57 UTC (rev 1880) +++ trunk/gdata/inst/xls/ExampleExcelFile_1904.xls 2014-08-28 05:17:28 UTC (rev 1881) Property changes on: trunk/gdata/inst/xls/ExampleExcelFile_1904.xls ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/vnd.ms-excel \ No newline at end of property Added: trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx =================================================================== (Binary files differ) Index: trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx =================================================================== --- trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx 2014-08-28 04:56:57 UTC (rev 1880) +++ trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx 2014-08-28 05:17:28 UTC (rev 1881) Property changes on: trunk/gdata/inst/xls/ExampleExcelFile_1904.xlsx ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet \ No newline at end of property Modified: trunk/gdata/tests/test.read.xls.R =================================================================== --- trunk/gdata/tests/test.read.xls.R 2014-08-28 04:56:57 UTC (rev 1880) +++ trunk/gdata/tests/test.read.xls.R 2014-08-28 05:17:28 UTC (rev 1881) @@ -110,3 +110,22 @@ example.wide.x <- read.xls(wideFileX) stopifnot(dim(example.wide.x)==c(0,16384)) } + +## Check handling of files with dates calulcated relative to +## 1900-01-01 and 1904-01-01 + +file.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xls') +file.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xls') + +example.1900 <- read.xls(file.1900, sheet=3) +example.1904 <- read.xls(file.1904, sheet=3) + +stopifnot( na.omit(example.1900 == example.1904) ) + +fileX.1900 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1900.xlsx') +fileX.1904 <- file.path(path.package('gdata'),'xls', 'ExampleExcelFile_1904.xlsx') + +exampleX.1900 <- read.xls(file.1900, sheet=3) +exampleX.1904 <- read.xls(file.1904, sheet=3) + +stopifnot( na.omit(exampleX.1900 == exampleX.1904) ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-08-28 04:57:05
|
Revision: 1880 http://sourceforge.net/p/r-gregmisc/code/1880 Author: warnes Date: 2014-08-28 04:56:57 +0000 (Thu, 28 Aug 2014) Log Message: ----------- Complete transition from Spreadsheet::XLSX to Spreadsheet::ParseXLSX Modified Paths: -------------- trunk/gdata/inst/perl/install_modules.pl trunk/gdata/inst/perl/module_tools.pl trunk/gdata/inst/perl/sheetCount.pl trunk/gdata/inst/perl/supportedFormats.pl Removed Paths: ------------- trunk/gdata/inst/perl/Spreadsheet/XLSX/ trunk/gdata/inst/perl/Spreadsheet/XLSX.pm Deleted: trunk/gdata/inst/perl/Spreadsheet/XLSX.pm =================================================================== --- trunk/gdata/inst/perl/Spreadsheet/XLSX.pm 2014-08-28 04:55:11 UTC (rev 1879) +++ trunk/gdata/inst/perl/Spreadsheet/XLSX.pm 2014-08-28 04:56:57 UTC (rev 1880) @@ -1,351 +0,0 @@ -package Spreadsheet::XLSX; - -use 5.006000; -use strict; -use warnings; - -our @ISA = qw(); - -our $VERSION = '0.12'; - -use Archive::Zip; -use Spreadsheet::XLSX::Fmt2007; -use Data::Dumper; -use Spreadsheet::ParseExcel; - -################################################################################ - -sub new { - - my ($class, $filename, $converter) = @_; - - my $self = {}; - - $self -> {zip} = Archive::Zip -> new ($filename) or die ("Cant't open $filename as a zip file\n"); - - my $member_shared_strings = $self -> {zip} -> memberNamed ('xl/sharedStrings.xml'); - - my @shared_strings = (); - - if ($member_shared_strings) { - - my $mstr = $member_shared_strings->contents; - $mstr =~ s/<t\/>/<t><\/t>/gsm; # this handles an empty t tag in the xml <t/> - foreach my $si ($mstr =~ /<si.*?>(.*?)<\/si/gsm) { - my $str; - foreach my $t ($si =~ /<t.*?>(.*?)<\/t/gsm) { - $t = $converter -> convert ($t) if $converter; - $str .= $t; - } - push @shared_strings, $str; - } - } - my $member_styles = $self -> {zip} -> memberNamed ('xl/styles.xml'); - - my @styles = (); - - my %style_info = (); - - if ($member_styles) { - - foreach my $t ($member_styles -> contents =~ /xf\ numFmtId="([^"]*)"(?!.*\/cellStyleXfs)/gsm) { #" - # $t = $converter -> convert ($t) if $converter; - push @styles, $t; - - } - my $default = $1 || ''; - - foreach my $t1 (@styles){ - $member_styles -> contents =~ /numFmtId="$t1" formatCode="([^"]*)/; - my $formatCode = $1 || ''; - if ($formatCode eq $default || not($formatCode)){ - if ($t1 == 9 || $t1==10){ $formatCode="0.00000%";} - elsif ($t1 == 14){ $formatCode="yyyy-mm-dd";} - elsif ($t1 == 20){ $formatCode="h:mm";} - else { - $formatCode=""; - } - } - $style_info{$t1} = $formatCode; - $default = $1 || ''; - } - - } - - my $member_rels = $self -> {zip} -> memberNamed ('xl/_rels/workbook.xml.rels') or die ("xl/_rels/workbook.xml.rels not found in this zip\n"); - - my %rels = (); - - foreach ($member_rels -> contents =~ /\<Relationship (.*?)\/?\>/g) { - - /^Id="(.*?)".*?Target="(.*?)"/ or next; - - $rels {$1} = $2; - - } - - my $member_workbook = $self -> {zip} -> memberNamed ('xl/workbook.xml') or die ("xl/workbook.xml not found in this zip\n"); - my $oBook = Spreadsheet::ParseExcel::Workbook->new; - $oBook->{SheetCount} = 0; - $oBook->{FmtClass} = Spreadsheet::XLSX::Fmt2007->new; - $oBook->{Flg1904}=0; - if ($member_workbook->contents =~ /date1904="1"/){ - $oBook->{Flg1904}=1; - } - my @Worksheet = (); - - foreach ($member_workbook -> contents =~ /\<(.*?)\/?\>/g) { - - /^(\w+)\s+/; - - my ($tag, $other) = ($1, $'); #' - - my @pairs = split /\" /, $other; - - $tag eq 'sheet' or next; - - my $sheet = { - MaxRow => 0, - MaxCol => 0, - MinRow => 1000000, - MinCol => 1000000, - }; - - foreach ($other =~ /(\S+=".*?")/gsm) { - - my ($k, $v) = split /=?"/; #" - - if ($k eq 'name') { - $sheet -> {Name} = $v; - $sheet -> {Name} = $converter -> convert ($sheet -> {Name}) if $converter; - } - elsif ($k eq 'r:id') { - - $sheet -> {path} = $rels {$v}; - - }; - - } - my $wsheet = Spreadsheet::ParseExcel::Worksheet->new(%$sheet); - push @Worksheet, $wsheet; - $oBook->{Worksheet}[$oBook->{SheetCount}] = $wsheet; - $oBook->{SheetCount}+=1; - - } - - $self -> {Worksheet} = \@Worksheet; - - foreach my $sheet (@Worksheet) { - - my $member_sheet = $self -> {zip} -> memberNamed ("xl/$sheet->{path}") or next; - - my ($row, $col); - - my $flag = 0; - my $s = 0; - my $s2 = 0; - my $sty = 0; - foreach ($member_sheet -> contents =~ /(\<.*?\/?\>|.*?(?=\<))/g) { - if (/^\<c r=\"([A-Z])([A-Z]?)([A-Z]?)(\d+)\"/) { - - $col = ord ($1) - 65; - - if ($2) { - $col++; - $col *= 26; - $col += (ord ($2) - 65); - } - - if ($3) { - $col++; - $col *= 26; - $col += (ord ($3) - 65); - } - - $row = $3 - 1; - - $s = m/t=\"s\"/ ? 1 : 0; - $s2 = m/t=\"str\"/ ? 1 : 0; - $sty = m/s="([0-9]+)"/ ? $1 : 0; - - } - elsif (/^<v/) { - $flag = 1; - } - elsif (/^<\/v/) { - $flag = 0; - } - elsif (length ($_) && $flag) { - my $v = $s ? $shared_strings [$_] : $_; - if ($v eq "</c>"){$v="";} - my $type = "Text"; - my $thisstyle = ""; - if (not($s) && not($s2)){ - $type="Numeric"; - $thisstyle = $style_info{$styles[$sty]}; - if ($thisstyle =~ /(?<!Re)d|m|y/){ - $type="Date"; - } - } - $sheet -> {MaxRow} = $row if $sheet -> {MaxRow} < $row; - $sheet -> {MaxCol} = $col if $sheet -> {MaxCol} < $col; - $sheet -> {MinRow} = $row if $sheet -> {MinRow} > $row; - $sheet -> {MinCol} = $col if $sheet -> {MinCol} > $col; - if ($v =~ /(.*)E\-(.*)/gsm && $type eq "Numeric"){ - $v=$1/(10**$2); # this handles scientific notation for very small numbers - } - my $cell =Spreadsheet::ParseExcel::Cell->new( - - Val => $v, - Format => $thisstyle, - Type => $type - - ); - - $cell->{_Value} = $oBook->{FmtClass}->ValFmt($cell, $oBook); - if ($type eq "Date" && $v<1){ #then this is Excel time field - $cell->{Type}="Text"; - $cell->{Val}=$cell->{_Value}; - } - $sheet -> {Cells} [$row] [$col] = $cell; - } - - } - - $sheet -> {MinRow} = 0 if $sheet -> {MinRow} > $sheet -> {MaxRow}; - $sheet -> {MinCol} = 0 if $sheet -> {MinCol} > $sheet -> {MaxCol}; - - } -foreach my $stys (keys %style_info){ -} - bless ($self, $class); - - return $oBook; - -} - -1; -__END__ - -=head1 NAME - -Spreadsheet::XLSX - Perl extension for reading MS Excel 2007 files; - -=head1 SYNOPSIS - - use Text::Iconv; - my $converter = Text::Iconv -> new ("utf-8", "windows-1251"); - - # Text::Iconv is not really required. - # This can be any object with the convert method. Or nothing. - - use Spreadsheet::XLSX; - - my $excel = Spreadsheet::XLSX -> new ('test.xlsx', $converter); - - foreach my $sheet (@{$excel -> {Worksheet}}) { - - printf("Sheet: %s\n", $sheet->{Name}); - - $sheet -> {MaxRow} ||= $sheet -> {MinRow}; - - foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) { - - $sheet -> {MaxCol} ||= $sheet -> {MinCol}; - - foreach my $col ($sheet -> {MinCol} .. $sheet -> {MaxCol}) { - - my $cell = $sheet -> {Cells} [$row] [$col]; - - if ($cell) { - printf("( %s , %s ) => %s\n", $row, $col, $cell -> {Val}); - } - - } - - } - - } - -=head1 DESCRIPTION - -This module is a (quick and dirty) emulation of Spreadsheet::ParseExcel for -Excel 2007 (.xlsx) file format. It supports styles and many of Excel's quirks, -but not all. It populates the classes from Spreadsheet::ParseExcel for interoperability; -including Workbook, Worksheet, and Cell. - -=head1 SEE ALSO - -=over 2 - -=item Text::CSV_XS, Text::CSV_PP - -http://search.cpan.org/~hmbrand/ - -A pure perl version is available on http://search.cpan.org/~makamaka/ - -=item Spreadsheet::ParseExcel - -http://search.cpan.org/~kwitknr/ - -=item Spreadsheet::ReadSXC - -http://search.cpan.org/~terhechte/ - -=item Spreadsheet::BasicRead - -http://search.cpan.org/~gng/ for xlscat likewise functionality (Excel only) - -=item Spreadsheet::ConvertAA - -http://search.cpan.org/~nkh/ for an alternative set of cell2cr () / -cr2cell () pair - -=item Spreadsheet::Perl - -http://search.cpan.org/~nkh/ offers a Pure Perl implementation of a -spreadsheet engine. Users that want this format to be supported in -Spreadsheet::Read are hereby motivated to offer patches. It's not high -on my todo-list. - -=item xls2csv - -http://search.cpan.org/~ken/ offers an alternative for my C<xlscat -c>, -in the xls2csv tool, but this tool focusses on character encoding -transparency, and requires some other modules. - -=item Spreadsheet::Read - -http://search.cpan.org/~hmbrand/ read the data from a spreadsheet (interface -module) - -=back - -=head1 AUTHOR - -Dmitry Ovsyanko, E<lt>do...@el...<gt>, http://eludia.ru/wiki/ - -Patches by: - - Steve Simms - Joerg Meltzer - Loreyna Yeung - Rob Polocz - Gregor Herrmann - H.Merijn Brand - endacoe - Pat Mariani - -=head1 ACKNOWLEDGEMENTS - - Thanks to TrackVia Inc. (http://www.trackvia.com) for paying for Rob Polocz working time. - -=head1 COPYRIGHT AND LICENSE - -Copyright (C) 2008 by Dmitry Ovsyanko - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself, either Perl version 5.8.8 or, -at your option, any later version of Perl 5 you may have available. - -=cut Modified: trunk/gdata/inst/perl/install_modules.pl =================================================================== --- trunk/gdata/inst/perl/install_modules.pl 2014-08-28 04:55:11 UTC (rev 1879) +++ trunk/gdata/inst/perl/install_modules.pl 2014-08-28 04:56:57 UTC (rev 1880) @@ -8,12 +8,12 @@ require 'module_tools.pl'; -my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_XLSX); +my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_ParseXLSX); # check if we need to do anything ($HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX) = check_modules(0); + $HAS_Spreadsheet_ParseXLSX) = check_modules(0); install_modules() unless $HAS_Compress_Raw_Zlib; Modified: trunk/gdata/inst/perl/module_tools.pl =================================================================== --- trunk/gdata/inst/perl/module_tools.pl 2014-08-28 04:55:11 UTC (rev 1879) +++ trunk/gdata/inst/perl/module_tools.pl 2014-08-28 04:56:57 UTC (rev 1880) @@ -17,7 +17,7 @@ $VERBOSE, $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX + $HAS_Spreadsheet_ParseXLSX ); $VERBOSE=$_[0]; @@ -25,9 +25,9 @@ eval { require Spreadsheet::ParseExcel; + use Spreadsheet::ParseExcel::Utility qw(ExcelFmt); $HAS_Spreadsheet_ParseExcel=1; print "Loaded Spreadsheet::ParseExcel\n" if $VERBOSE; - }; eval { @@ -38,7 +38,7 @@ eval { require Spreadsheet::ParseXLSX; - $HAS_Spreadsheet_XLSX=1; + $HAS_Spreadsheet_ParseXLSX=1; print "Loaded Spreadsheet::ParseXLSX\n" if $VERBOSE; }; @@ -49,10 +49,10 @@ print "ERROR: Unable to load Compress::Raw::Zlib perl module! \n" if ! $HAS_Compress_Raw_Zlib; print "ERROR: Unable to load Spreadsheet::ParseXLSX perl module! \n" - if ! $HAS_Spreadsheet_XLSX; + if ! $HAS_Spreadsheet_ParseXLSX; } - return $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_XLSX; + return $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_ParseXLSX; } sub check_modules_and_notify() @@ -60,7 +60,7 @@ my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX) = check_modules(0); + $HAS_Spreadsheet_ParseXLSX) = check_modules(0); $HAS_Spreadsheet_ParseExcel or die("ERROR: Perl module Spreadsheet::ParseExcel cannot be loaded. Exiting.\n"); @@ -68,12 +68,12 @@ $HAS_Compress_Raw_Zlib or warn("WARNING: Perl module Compress::Raw::Zlib cannot be loaded.\n"); - $HAS_Spreadsheet_XLSX or + $HAS_Spreadsheet_ParseXLSX or warn("WARNING: Perl module Spreadsheet::ParseXLSX cannot be loaded.\n"); - ($HAS_Compress_Raw_Zlib && $HAS_Spreadsheet_XLSX ) or + ($HAS_Compress_Raw_Zlib && $HAS_Spreadsheet_ParseXLSX ) or warn("WARNING: Microsoft Excel 2007 'XLSX' formatted files will not be processed.\n"); - return $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_XLSX; + return $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, $HAS_Spreadsheet_ParseXLSX; } sub install_modules() Modified: trunk/gdata/inst/perl/sheetCount.pl =================================================================== --- trunk/gdata/inst/perl/sheetCount.pl 2014-08-28 04:55:11 UTC (rev 1879) +++ trunk/gdata/inst/perl/sheetCount.pl 2014-08-28 04:56:57 UTC (rev 1880) @@ -15,7 +15,7 @@ my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX + $HAS_Spreadsheet_ParseXLSX ) = check_modules_and_notify(); use File::Spec::Functions; Modified: trunk/gdata/inst/perl/supportedFormats.pl =================================================================== --- trunk/gdata/inst/perl/supportedFormats.pl 2014-08-28 04:55:11 UTC (rev 1879) +++ trunk/gdata/inst/perl/supportedFormats.pl 2014-08-28 04:56:57 UTC (rev 1880) @@ -10,12 +10,12 @@ my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX) = check_modules(0); + $HAS_Spreadsheet_ParseXLSX) = check_modules(0); $XLS_Support = $HAS_Spreadsheet_ParseExcel; $XLSX_Support = $HAS_Spreadsheet_ParseExcel && $HAS_Compress_Raw_Zlib && - $HAS_Spreadsheet_XLSX; + $HAS_Spreadsheet_ParseXLSX; printf "Supported formats: "; printf "XLS " if ( $XLS_Support ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2014-08-28 04:55:18
|
Revision: 1879 http://sourceforge.net/p/r-gregmisc/code/1879 Author: warnes Date: 2014-08-28 04:55:11 +0000 (Thu, 28 Aug 2014) Log Message: ----------- Handle Excel files created on the Mac, where by default Excel uses 1904-01-01 as the baseline for dates, rather than the usual 1900-01-01. Modified Paths: -------------- trunk/gdata/inst/perl/xls2csv.pl Modified: trunk/gdata/inst/perl/xls2csv.pl =================================================================== --- trunk/gdata/inst/perl/xls2csv.pl 2014-08-28 03:08:23 UTC (rev 1878) +++ trunk/gdata/inst/perl/xls2csv.pl 2014-08-28 04:55:11 UTC (rev 1879) @@ -20,7 +20,7 @@ my( $HAS_Spreadsheet_ParseExcel, $HAS_Compress_Raw_Zlib, - $HAS_Spreadsheet_XLSX + $HAS_Spreadsheet_ParseXLSX ) = check_modules_and_notify(); # declare some varibles local @@ -29,7 +29,7 @@ $filename, $volume, $directories, $whoami, $sep, $sepName, $sepLabel, $sepExt, $skipBlankLines, %switches, - $parser, $oBook + $parser, $oBook, $formatter ); ## @@ -135,7 +135,8 @@ my $oExcel; my $oBook; -$oExcel = new Spreadsheet::ParseExcel; +$oExcel = new Spreadsheet::ParseExcel; +$formatter = Spreadsheet::ParseExcel::FmtDefault->new(); open(FH, "<$ARGV[0]") or die "Unable to open file '$ARGV[0]'.\n"; close(FH); @@ -240,14 +241,27 @@ for(my $col = $mincol; $col <= $maxcol; $col++) { - my $cell = $sheet->{Cells}[$row][$col]; + my $cell = $sheet->{Cells}[$row][$col]; + my $format = $formatter->FmtString($cell, $oBook); if( defined($cell) ) { - $_=$cell->Value; #{Val}; + if ($cell->type() eq "Date" && $oBook->{Flag1904} ) + { + $_ = ExcelFmt($format, + $cell->unformatted(), + $oBook->{Flag1904}); + } + else + { + $_=$cell->value(); + } # convert '#NUM!' strings to missing (empty) values s/#NUM!//; + # convert "#DIV/0!" strings to missing (emtpy) values + s|#DIV/0!||; + # escape double-quote characters in the data since # they are used as field delimiters s/\"/\\\"/g; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |