[med-svn] [SCM] vegan branch, master, updated. debian/2.0-3-1-10-g049dcc3

Charles Plessy plessy at debian.org
Thu Apr 4 05:44:31 UTC 2013


The following commit has been merged in the master branch:
commit 8136fa9326d1bc693892664d39ac378a4fe42f6f
Author: Charles Plessy <plessy at debian.org>
Date:   Thu Apr 4 14:42:20 2013 +0900

    Imported Upstream version 2.0-7

diff --git a/DESCRIPTION b/DESCRIPTION
index c4c1f85..beb5e1d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: vegan
 Title: Community Ecology Package
-Version: 2.0-6
-Date: February 11, 2013
+Version: 2.0-7
+Date: March 19, 2013
 Author: Jari Oksanen, F. Guillaume Blanchet, Roeland Kindt, Pierre
         Legendre, Peter R. Minchin, R. B. O'Hara, Gavin L. Simpson,
         Peter Solymos, M. Henry H. Stevens, Helene Wagner
@@ -13,6 +13,7 @@ Description: Ordination methods, diversity analysis and other functions
         for community and vegetation ecologists.
 License: GPL-2
 URL: http://cran.r-project.org, http://vegan.r-forge.r-project.org/
-Packaged: 2013-02-11 12:34:02 UTC; jarioksa
+Packaged: 2013-03-19 11:34:07 UTC; jarioksa
+NeedsCompilation: yes
 Repository: CRAN
-Date/Publication: 2013-02-11 14:26:43
+Date/Publication: 2013-03-19 16:04:57
diff --git a/MD5 b/MD5
index 898fe5c..1ec737a 100644
--- a/MD5
+++ b/MD5
@@ -1,5 +1,5 @@
-b4d5ed51fcb54b4340d9b01e736394e9 *DESCRIPTION
-b938b5c56b97b53217cf1c3f7b7cab12 *NAMESPACE
+4118da91bd5fe845079424bf0750a660 *DESCRIPTION
+e4c6f26e26e7f8e31b4e4a30d13d467e *NAMESPACE
 4b8531b446af54510e5fb31f841aed2f *R/AIC.radfit.R
 5c5fdbcdc2a38e2cbafdb8f2c5eb2e08 *R/CCorA.R
 6592cf7dc692f87b4a147eb625e18624 *R/MDSrotate.R
@@ -102,16 +102,16 @@ ddc17af5f1e4d952cdf0c54048fdc7c0 *R/factorfit.R
 7e304b1c384c4d8588e5dbedd9459c73 *R/fieller.MOStest.R
 c9a0a434a146ba9ebe25a9e72f36439c *R/fisher.alpha.R
 05bd12db4d832b01b37b15294e6fa15f *R/fisherfit.R
-d9ca8944dc5fdfc396e50d118c2638c3 *R/fitspecaccum.R
-dac90ca1c5655d0d1b8c163118d1db7e *R/fitted.capscale.R
+6baa91137f90af022902e047bde687ce *R/fitspecaccum.R
+1db8e420fdd54103774d745d356333b8 *R/fitted.capscale.R
 8fc0cd4954e2976b71fe4995291d2fab *R/fitted.cca.R
 0080b65cfd48bac5e53961b8e12682e5 *R/fitted.procrustes.R
 bdb5429c7c23d1f730c5c7c938fb5e09 *R/fitted.radfit.R
 30ff7806ee2f3e93b436fa3d1c00fedf *R/fitted.rda.R
 57c9a7ccff6a9c066b2aba3475f2330b *R/goodness.R
-c3bc6f9771503a4b93f4dce3096fd874 *R/goodness.cca.R
+681e6b2273eac6f1724d13ce51ad3cf2 *R/goodness.cca.R
 7af5f06020065621d8466decb16e0aa4 *R/goodness.metaMDS.R
-3676ae4dd5c789334fb822a8caa81979 *R/goodness.rda.R
+4188d434bdb95c56734b5e76319bf55e *R/goodness.rda.R
 8a767726c40223a58d4055759bf41efe *R/head.summary.cca.R
 d17f4f6be45b52e01cd605b09b56a80a *R/hierParseFormula.R
 3d19236ee5dd2f1c678061773895e86f *R/hiersimu.R
@@ -142,7 +142,7 @@ fdb2f4786b31866197c80d827584edaf *R/mantel.correlog.R
 e054f13ad65a7f2616561c73557b412b *R/meandist.R
 57cb748570098b7e5a5aedbddb39fb84 *R/metaMDS.R
 26b26e400ead4cf3de31d7eab29c6984 *R/metaMDSdist.R
-e0ae9ef92dbe17d6a919913190311048 *R/metaMDSiter.R
+b4f488ea5456f4f58079691705ac729b *R/metaMDSiter.R
 f63315501ad2f3a96dee9ee27a867131 *R/metaMDSredist.R
 928df675822d321e4533ba2b7cf0c79f *R/model.frame.cca.R
 9406148bd2cfa3e74b83adfe24858c46 *R/model.matrix.cca.R
@@ -158,7 +158,7 @@ f5e79cb1c2dc1fcabb6e6b5cb4dc0828 *R/nestedbetasor.R
 c15884dd28790c7521ecb33175c86e5c *R/nesteddisc.R
 e65023174f4ce8874a2f88f332af5a37 *R/nestedn0.R
 917143cda17f75f9219e7263b79b1fab *R/nestednodf.R
-e27188404c8386162d6af0fb47110a84 *R/nestedtemp.R
+cf4c7acbbf20366f629dee40c9203764 *R/nestedtemp.R
 74b2723851155de631716fa479f8ea38 *R/no.shared.R
 47973ff187f68836a19d20ea37c60868 *R/nobs.R
 dfc5c85777c1dbc55b850dc1ccbf115a *R/oecosimu.R
@@ -244,7 +244,7 @@ e449c6ef786f8802c9806b51248b66cc *R/plot.specaccum.R
 abc96c8853871035d494dfa9086d4d6e *R/plot.taxondive.R
 6104fadf391072e78a8f2825ac41ceb2 *R/plot.varpart.R
 00d109fe7fc29440698b9f1a4bbc876f *R/plot.varpart234.R
-4c6a8925c0eef5a61483ab0825b4e870 *R/points.cca.R
+4c9de900b73bb0c12950b9f2b96a9901 *R/points.cca.R
 3fbe4782d2c376d98f23db8890c42b3b *R/points.decorana.R
 b5661457c540b56e77eba97b8b290a91 *R/points.humpfit.R
 a0e1e2d579fa8c1992a26a2e8d435750 *R/points.metaMDS.R
@@ -283,7 +283,7 @@ b31dbaa6493fdda1f865f95b3e889aab *R/print.isomap.R
 6263b03c7eb5ae61f917888597abc4fd *R/print.mantel.R
 f92fd82d10ce91e2cba2239e756e1332 *R/print.mantel.correlog.R
 9d6b6102e251f155c0b9af98d37a5f49 *R/print.metaMDS.R
-7f2dbb16f8602bf3aa22b1fc69707dda *R/print.monoMDS.R
+f221ea2ab4e8903ca1ae735038bfba04 *R/print.monoMDS.R
 8bd5bbb931a97ddada79e4552bd614b8 *R/print.mrpp.R
 946b3b708190211e9eb1acc94ffa102d *R/print.mso.R
 7c074bf7870cb4c306c6181769b28a19 *R/print.nestedchecker.R
@@ -397,9 +397,10 @@ a8c1bf3d3f371f3ee5a3de3c39a4113a *R/summary.procrustes.R
 25e8a947666bed660358e359730160d9 *R/summary.specaccum.R
 8f34602692f6a5476bb4a6d7b2a269fe *R/summary.taxondive.R
 7c55757d8187363116d3561d53cbc5ba *R/swan.R
+f1530a301997e88e27e2eb072e295515 *R/tabasco.R
 62bc8a0693a71adb1457b0a102d8951a *R/taxa2dist.R
 90ec6192eb43f8fd29bc93485f4ef293 *R/taxondive.R
-502b11cc8435f7a3d6e35326c1375ea6 *R/text.cca.R
+f94b7781111e04de4ae1f7df67003ca2 *R/text.cca.R
 1f4d9ba97695c0fa99456f427114b049 *R/text.decorana.R
 6a6e426f6e464bb7bdaa75d92674562c *R/text.metaMDS.R
 974bdc93cd9b352d30debf3e93111136 *R/text.ordiplot.R
@@ -421,11 +422,11 @@ b43aca5a7abcce2f36629ed4036add72 *R/vegan-deprecated.R
 722ab25ac95b6c419b29a94347916f23 *R/veganCovEllipse.R
 c33a08b31fabd66594d97a4362c85534 *R/vegandocs.R
 5be53abd0d608c314dc6a9f071bd676d *R/vegdist.R
-ad9c801b614dd9f73558eb32689ef8f9 *R/vegemite.R
+cbf0bc1d54508fe56afcc8bd789abd77 *R/vegemite.R
 5d6047d7f63f04ae9ff40179c534aa0b *R/veiledspec.R
 1f6deab4b61a9be48be43e80703cd4b6 *R/vif.cca.R
 322254f8bc3b02f7a971058cbdfa9edd *R/wascores.R
-e5db28e2a61cf6ad72cfe0d6d600f25d *R/wcmdscale.R
+860e4de36a01011c639b9eafd909b673 *R/wcmdscale.R
 ecfd48e2f4df6bcd683a87203dd80e12 *R/weights.cca.R
 76c939e9fe7776e51eeabc1d44be83cb *R/weights.decorana.R
 73babeed9df14635d99b1a619a1286e4 *R/weights.rda.R
@@ -443,22 +444,22 @@ c51905bd025ccea2737527b6fca4a081 *data/mite.pcnm.rda
 ee3c343418d7cf2e435028adf93205f1 *data/sipoo.rda
 f87df84297865b5faf31e232e97a0f94 *data/varechem.rda
 82153b3e47807b926b77cef49900f422 *data/varespec.rda
-27ee2fdae550893ef43d308c63245ab1 *inst/ChangeLog
-e7bfd68f9f2e2e804ded0ce8a6cea011 *inst/NEWS.Rd
+bf2ad7c62163afdaa41ea336bdaeb88c *inst/ChangeLog
+ab9b7fd3e8cac85ace5c94673e9382b0 *inst/NEWS.Rd
 9abfab8b05c34dd283379a7d87500ffb *inst/ONEWS
-bde01a71ea9b74bbd541fdc675ef53f9 *inst/doc/FAQ-vegan.pdf
+47feb16ee49ec7e6483eebb881fae159 *inst/doc/FAQ-vegan.pdf
 a901a5efa50b13f8ce50b95bada4a1b8 *inst/doc/FAQ-vegan.texi
 a712f5f699b09276e523f83ce3b731ae *inst/doc/Makefile
-e31e8341d1bfb6c668847c76b7655e06 *inst/doc/NEWS.html
+262d0bb9e1efda623933fc1a42fd4b96 *inst/doc/NEWS.html
 bfad8283cb33e6e2837f62360671a014 *inst/doc/decision-vegan.Rnw
-bccf896f24a6d941907ae1c095f601ff *inst/doc/decision-vegan.pdf
-9394ecf28c95c20d965655591a8b29f0 *inst/doc/decision-vegan.tex
+e4946ba807e8c7db84096c9320a9b36a *inst/doc/decision-vegan.pdf
+027057d32bd1bb6baf990ecd9845711e *inst/doc/decision-vegan.tex
 51f01c074c07c22f3da55c597ca05d9a *inst/doc/diversity-vegan.Rnw
-68b2d85739ad66045f2b368268f22929 *inst/doc/diversity-vegan.pdf
-2962abdd9039acaf3424781ea6a30ed6 *inst/doc/diversity-vegan.tex
+b97571ad2b3609cd358903b951c1f869 *inst/doc/diversity-vegan.pdf
+50b65b4730835c95babdb6e5ed974868 *inst/doc/diversity-vegan.tex
 53ffe702420a71c3cbc8b8287b25fbfe *inst/doc/intro-vegan.Rnw
-d5aff24f82fc09a922855080b1680737 *inst/doc/intro-vegan.pdf
-9ee9153ce0876a63fc4b851f8a838e2f *inst/doc/intro-vegan.tex
+3272a98bf658a5a396a0e3fb9182f52d *inst/doc/intro-vegan.pdf
+3d58488f31e30b1c80ac9755d7530784 *inst/doc/intro-vegan.tex
 a1c35ea488b715441cd2269eb6998945 *inst/doc/partitioning.pdf
 bafe698f5c543e20d4c52659545677bf *inst/doc/vegan.bib
 8790e1afcfbf88c374d6c87928eab54f *inst/doc/veganjss.sty
@@ -482,8 +483,8 @@ b04c2fae35dba2d97cb248814d5e2fe9 *man/bgdispersal.Rd
 1eab4a6369fa1d203a4a3f41f4ee4c06 *man/biplot.rda.Rd
 88602656153ee95f10335487273e132d *man/capscale.Rd
 d3c1067cb5e4dc6f6b9a1c7d94e70ab5 *man/cascadeKM.Rd
-be184dfa5e05b449f46efb5a94b80d25 *man/cca.Rd
-4da051166c46889d3bce1bda6f353846 *man/cca.object.Rd
+01df6d53d022485e95f39e7c29d2d61d *man/cca.Rd
+97385598d1197eeaf8c987bf34329013 *man/cca.object.Rd
 0a27f941c844520672e5ca370fda6719 *man/clamtest.Rd
 335d0f7691ad9d0c48fffce9f9db6201 *man/contribdiv.Rd
 c41033fb9c572365490cc23b9870c950 *man/decorana.Rd
@@ -510,7 +511,7 @@ e473a6d2589993b85fc1176866fdde78 *man/linestack.Rd
 a83cd418e2a052ea32ef431bce2e3787 *man/make.cepnames.Rd
 e8a27e8ace7bd56776794ebfd8391d64 *man/mantel.Rd
 f5db928e02639d251389edb1cd36ff13 *man/mantel.correlog.Rd
-8219156d6aa03c5882324feee963e5cb *man/metaMDS.Rd
+f0f939023236abf04e5af5e2a3652082 *man/metaMDS.Rd
 4cfb02239809fa03b28e10ec8e8c9c6b *man/mite.Rd
 0d0876437491b3701e4d20cbbf0d1b6f *man/model.matrix.cca.Rd
 09bf57e9d9ae0178eca8facf3f9d20b7 *man/monoMDS.Rd
@@ -536,7 +537,7 @@ d971701b3c6f89b3a6b358a3966a43d2 *man/ordixyplot.Rd
 864ed25d069da12a2226310240f1f740 *man/permatfull.Rd
 807092c467db330149046d1dc9e9ab91 *man/permutations.Rd
 fb24c58ca61caf767ced5bd79dbff57e *man/permutest.betadisper.Rd
-a8862a670b6894fc38bbb2ade4c85e23 *man/plot.cca.Rd
+47898b675bb6d36fce6961e6a70d8d57 *man/plot.cca.Rd
 9f296f0830397598ee4849fc006762d1 *man/prc.Rd
 165334d6ad139cadd36957afd6d10923 *man/predict.cca.Rd
 80aa98f140babc312081f0a01ad3a77d *man/procrustes.Rd
@@ -567,9 +568,9 @@ e8d8b52de649979b17b484d03775c5c0 *man/vegan-internal.Rd
 ec9c7e972e815897f61fb3fdd16a008b *man/vegan-package.Rd
 f6f284ceb3b9a39e7b079936f9400cc2 *man/vegandocs.Rd
 197fe8ed2fe66db294381cb3c08325e1 *man/vegdist.Rd
-3fc88b0b479d2099ced8ca764fbcbea6 *man/vegemite.Rd
+982fdb71847d8b7338c7effc5432027d *man/vegemite.Rd
 c3209a8eff0fe638d3a43b25ea5bec16 *man/wascores.Rd
-26906624d4a17e3cf4a20f7305190ba6 *man/wcmdscale.Rd
+7d16b5020895bf5ead253010c733e7e5 *man/wcmdscale.Rd
 dd4512521b5b7a678f87c7f27d6b986c *src/cepin.f
 dd22a1632081402e62320a4c0d6b2aa9 *src/data2hill.c
 7703ffdb64c5f31de56bfd8253877ad6 *src/decorana.f
diff --git a/NAMESPACE b/NAMESPACE
index cd8f2c3..58f6829 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -25,7 +25,7 @@ prestondistr, prestonfit, procrustes, protest, radfit, radlattice,
 rankindex, rarecurve, rarefy, raupcrick, rda, renyiaccum, renyi,
 rrarefy, scores, showvarparts, simper, spandepth, spantree, specaccum,
 specnumber, specpool2vect, specpool, spenvcor, stepacross, stressplot,
-swan, taxa2dist, taxondive, tolerance, treedist, treedive, treeheight,
+swan, tabasco, taxa2dist, taxondive, tolerance, treedist, treedive, treeheight,
 tsallisaccum, tsallis, varpart, vectorfit, vegandocs, vegdist,
 vegemite, veiledspec, wascores, wcmdscale, wisconsin)
 
diff --git a/R/fitspecaccum.R b/R/fitspecaccum.R
index bddc11a..e7bc7f3 100644
--- a/R/fitspecaccum.R
+++ b/R/fitspecaccum.R
@@ -15,26 +15,20 @@ fitspecaccum <-
         x <- object$individuals
     else
         x <- object$sites
-    mods <- switch(model,
-        "arrhenius" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSarrhenius(x, k, z), ...)),
-        "gleason" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSgleason(x, k, slope), ...)),
-        "gitay" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSgitay(x, k, slope), ...)),
-        "lomolino" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSlomolino(x, Asym, xmid, slope), ...)),
-        "asymp" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSlogis(x, Asym, xmid, scal), ...)),
-        "gompertz" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSgompertz(x, Asym, xmid, scal), ...)),
-        "michaelis-menten" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSmicmen(x, Vm, K), ...)),
-        "logis" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSlogis(x, Asym, xmid, scal), ...)),
-        "weibull" = apply(SpeciesRichness, 2,
-             function(y) nls(y ~ SSweibull(x, Asym, Drop, lrc, par), ...))
-                   )
+    NLSFUN <- function(y, x, model, ...) {
+        switch(model,
+        "arrhenius" = nls(y ~ SSarrhenius(x, k, z),  ...),
+        "gleason" = nls(y ~ SSgleason(x, k, slope),  ...),
+        "gitay" = nls(y ~ SSgitay(x, k, slope), ...),
+        "lomolino" = nls(y ~ SSlomolino(x, Asym, xmid, slope), ...),
+        "asymp" = nls(y ~ SSasymp(x, Asym, R0, lrc), ...),
+        "gompertz" = nls(y ~ SSgompertz(x, Asym, xmid, scal), ...),
+        "michaelis-menten" = nls(y ~ SSmicmen(x, Vm, K),  ...),
+        "logis" = nls(y ~ SSlogis(x, Asym, xmid, scal),  ...),
+        "weibull" = nls(y ~ SSweibull(x, Asym, Drop, lrc, par), ...))
+    }
+    mods <- lapply(seq_len(NCOL(SpeciesRichness)),
+                  function(i, ...) NLSFUN(SpeciesRichness[,i], x, model, ...))
     object$fitted <- drop(sapply(mods, fitted))
     object$residuals <- drop(sapply(mods, residuals))
     object$coefficients <- drop(sapply(mods, coef))
diff --git a/R/fitted.capscale.R b/R/fitted.capscale.R
index 0ec7442..f8b5610 100644
--- a/R/fitted.capscale.R
+++ b/R/fitted.capscale.R
@@ -6,8 +6,8 @@
     type <- match.arg(type)
     ## Return scaled eigenvalues
     U <- switch(model,
-                CCA = object$CCA$u.eig,
-                CA = object$CA$u.eig,
+                CCA = object$CCA$u %*% diag(sqrt(object$CCA$eig)),
+                CA = object$CA$u %*% diag(sqrt(object$CA$eig)),
                 Imaginary = object$CA$imaginary.u.eig,
                 pCCA = object$pCCA$Fit/object$adjust)
     ## Distances or working scores U
diff --git a/R/goodness.cca.R b/R/goodness.cca.R
index b82a0f0..7a29b85 100644
--- a/R/goodness.cca.R
+++ b/R/goodness.cca.R
@@ -1,7 +1,7 @@
 `goodness.cca` <-
-    function (object, display = c("species", "sites"), choices, model = c("CCA", 
-                                                                "CA"), statistic = c("explained", "distance"), summarize = FALSE, 
-              ...) 
+    function (object, display = c("species", "sites"), choices,
+              model = c("CCA", "CA"), statistic = c("explained", "distance"),
+              summarize = FALSE, ...) 
 {
     model <- match.arg(model)
     if (is.null(object$CCA)) 
@@ -11,11 +11,12 @@
     statistic <- match.arg(statistic)
     display <- match.arg(display)
     cs <- if(display == "species") object$colsum else object$rowsum
+    lambda2 <- sqrt(object[[model]]$eig)
     if (display == "species") {
         if (is.null(object$CCA)) 
             Xbar <- object$CA$Xbar
         else Xbar <- object$CCA$Xbar
-        v <- object[[model]]$v.eig
+        v <- sweep(object[[model]]$v, 2, lambda2, "*")
         tot <- diag(crossprod(Xbar))
     }
     else {
@@ -25,7 +26,7 @@
             Xbar <- qr.fitted(object$CCA$QR, Xbar)
             tot <- tot + diag(crossprod(t(Xbar)))
         }
-        v <- object[[model]]$u.eig
+        v <- sweep(object[[model]]$u, 2, lambda2, "*")
     }
     if (!missing(choices)) 
         v <- v[, choices, drop = FALSE]
diff --git a/R/goodness.rda.R b/R/goodness.rda.R
index 9fc4f4b..ed635d3 100644
--- a/R/goodness.rda.R
+++ b/R/goodness.rda.R
@@ -1,7 +1,7 @@
 `goodness.rda` <-
-    function (object, display = c("species", "sites"), choices, model = c("CCA", 
-                                                                "CA"), statistic = c("explained", "distance"), summarize = FALSE, 
-              ...) 
+    function (object, display = c("species", "sites"), choices,
+              model = c("CCA", "CA"), statistic = c("explained", "distance"),
+              summarize = FALSE, ...) 
 {
     model <- match.arg(model)
     display <- match.arg(display)
@@ -13,11 +13,12 @@
         stop("model ", model, " is not available")
     statistic <- match.arg(statistic)
     cs <- weights(object, display = display)
+    lambda2 <- sqrt(object[[model]]$eig)
     if (display == "species") {
         if (is.null(object$CCA)) 
             Xbar <- object$CA$Xbar
         else Xbar <- object$CCA$Xbar
-        v <- object[[model]]$v.eig
+        v <- sweep(object[[model]]$v, 2, lambda2, "*")
         tot <- diag(crossprod(Xbar)/(nrow(Xbar) - 1))
     }
     else {
@@ -31,7 +32,7 @@
             tot <- tot + diag(crossprod(t(Xbar)))/(nrow(Xbar) - 
                                                    1)
         }
-        v <- object[[model]]$u.eig
+        v <- sweep(object[[model]]$u, 2, lambda2, "*")
     }
     if (!missing(choices)) 
         v <- v[, choices, drop = FALSE]
diff --git a/R/metaMDSiter.R b/R/metaMDSiter.R
index e319d48..7221ef7 100644
--- a/R/metaMDSiter.R
+++ b/R/metaMDSiter.R
@@ -1,6 +1,6 @@
 `metaMDSiter` <-
     function (dist, k = 2, trymax = 20, trace = 1, plot = FALSE, 
-              previous.best, engine = "monoMDS", ...) 
+              previous.best, engine = "monoMDS", maxit = 200, ...) 
 {
     engine <- match.arg(engine, c("monoMDS", "isoMDS"))
     if (engine == "isoMDS")
@@ -49,8 +49,10 @@
     } else {
         ## no previous.best: start with cmdscale
         s0 <- switch(engine,
-                 "monoMDS" = monoMDS(dist, y = cmdscale(dist, k = k), k = k, ...),
-                 "isoMDS" = isoMDS(dist, k = k, trace = isotrace))
+                 "monoMDS" = monoMDS(dist, y = cmdscale(dist, k = k), k = k,
+                 maxit = maxit, ...),
+                 "isoMDS" = isoMDS(dist, k = k, trace = isotrace,
+                 maxit = maxit))
     }
     if (trace) 
         cat("Run 0 stress", s0$stress, "\n")
@@ -58,9 +60,9 @@
     while(tries < trymax) {
         tries <- tries + 1
         stry <- switch(engine,
-                       "monoMDS" = monoMDS(dist, k = k, maxit = 200, ...),
+                       "monoMDS" = monoMDS(dist, k = k, maxit = maxit, ...),
                        "isoMDS" = isoMDS(dist, initMDS(dist, k = k), k = k,
-                       maxit = 200, tol = 1e-07, trace = isotrace))
+                       maxit = maxit, tol = 1e-07, trace = isotrace))
         if (trace) {
             cat("Run", tries, "stress", stry$stress, "\n")
         }
diff --git a/R/nestedtemp.R b/R/nestedtemp.R
index 7e6a611..714338b 100644
--- a/R/nestedtemp.R
+++ b/R/nestedtemp.R
@@ -48,7 +48,23 @@
     fillfun <- function(x, p) 1 - (1-(1-x)^p)^(1/p)
     intfun <- function(p, fill)
         integrate(fillfun, lower=0, upper=1, p=p)$value - fill
-    p <- uniroot(intfun, c(0,20), fill=fill)$root
+    ## 'p' will depend on 'fill', and fill = 0.0038 correspond to p =
+    ## 20. Sometimes the fill is lower, and therefore we try() to see
+    ## if we need to move the bracket up. We should need to do this
+    ## very rarely.
+    lo <- 0
+    hi <- 20
+    repeat{
+        sol <- try(uniroot(intfun, c(lo,hi), fill=fill), silent = TRUE)
+        if (inherits(sol, "try-error")) {
+            if (hi > 640) # bail out
+                stop(gettextf("matrix is too sparse, fill is %g"), fill)
+            lo <- hi
+            hi <- hi + hi
+        } else
+            break
+    }
+    p <- sol$root
     ## row coordinates of the fill line for all matrix entries
     out <- matrix(0, nrow=length(r), ncol=length(c))
     for (i in 1:length(r))
diff --git a/R/points.cca.R b/R/points.cca.R
index 8462bf2..7c0990d 100644
--- a/R/points.cca.R
+++ b/R/points.cca.R
@@ -1,6 +1,6 @@
 `points.cca` <-
     function (x, display = "sites", choices = c(1, 2), scaling = 2,
-              arrow.mul, head.arrow = 0.05, select, const, ...)
+              arrow.mul, head.arrow = 0.05, select, const, axis.bp = TRUE, ...)
 {
     formals(arrows) <- c(formals(arrows), alist(... = ))
     if (length(display) > 1)
@@ -28,10 +28,12 @@
         arrows(0, 0, pts[, 1], pts[, 2], length = head.arrow,
                ...)
         pts <- pts * 1.1
-        axis(3, at = c(-arrow.mul, 0, arrow.mul), labels = rep("",
-                                                  3))
-        axis(4, at = c(-arrow.mul, 0, arrow.mul), labels = c(-1,
-                                                  0, 1))
+        if (axis.bp) {
+            axis(3, at = c(-arrow.mul, 0, arrow.mul),
+                 labels = rep("", 3))
+            axis(4, at = c(-arrow.mul, 0, arrow.mul),
+                 labels = c(-1, 0, 1))
+        }
         return(invisible())
     }
     points(pts, ...)
diff --git a/R/print.monoMDS.R b/R/print.monoMDS.R
index 1cf7e92..fb14595 100644
--- a/R/print.monoMDS.R
+++ b/R/print.monoMDS.R
@@ -31,10 +31,10 @@
         cat(", rotated to principal components")
     cat("\n")
     stoplab <- switch(x$icause,
-                      "Maximum number of iteration reached",
-                      "Stress nearly zero",
-                      "Stress nearly unchanged",
-                      "Scale factor of gradient nearly zero")
+                      "Maximum number of iterations (maxit) reached",
+                      "Stress nearly zero (< smin)",
+                      "Stress nearly unchanged (ratio > sratmax)",
+                      "Scale factor of gradient nearly zero (< sfgrmin)")
     cat("Stopped after ", x$iters, " iterations: ", stoplab, "\n", sep="")
     invisible(x)
 }
diff --git a/R/tabasco.R b/R/tabasco.R
new file mode 100644
index 0000000..b5c79ab
--- /dev/null
+++ b/R/tabasco.R
@@ -0,0 +1,131 @@
+### The function displays (ordered) heatmaps of community data. It
+### copies vegemite() for handling 'use', 'sp.ind', 'site.ind' and
+### 'select', but then switches to heatmap() to display the
+### data. Unlike heatmap(), it does not insist on showing dendrograms,
+### but only uses these for sites, and only if given as 'use'.
+
+`tabasco` <-
+    function (x, use, sp.ind = NULL, site.ind = NULL,  
+              select, Rowv = TRUE, Colv = TRUE, ...) 
+{
+    if (any(x < 0))
+        stop("function cannot be used with negative data values")
+    pltree <- sptree <- NA
+    if (!missing(use)) {
+        if (!is.list(use) && is.vector(use)) {
+            if (is.null(site.ind)) 
+                site.ind <- order(use)
+            if (is.null(sp.ind)) 
+                sp.ind <- order(wascores(use, x))
+        }
+        else if (inherits(use, c("dendrogram", "hclust", "twins"))) {
+            if (inherits(use, "twins")) {
+                require(cluster) || stop("package cluster needed to handle 'use'")
+            }
+            if (!inherits(use, "dendrogram"))
+                use <- as.dendrogram(use)
+            if (!is.null(site.ind))
+                stop("'site.ind' cannot be used with dendrogram")
+            ## Reorder tree if Rowv specified
+            if (isTRUE(Rowv)) {
+                ## order by first CA axis -- decorana() is fastest
+                tmp <- decorana(x, ira = 1)
+                use <- reorder(use, scores(tmp, dis="sites", choices = 1),
+                               agglo.FUN = mean)
+            } else if (length(Rowv) > 1) {
+                ## Rowv is a vector
+                if (length(Rowv) != nrow(x))
+                    stop(gettextf("Rowv has length %d, but 'x' has %d rows",
+                                  length(Rowv), nrow(x)))
+                use <- reorder(use, Rowv, agglo.FUN = mean)
+            }
+            site.ind <- seq_len(nrow(x))
+            names(site.ind) <- rownames(x)
+            site.ind <- site.ind[labels(use)]
+            if (is.null(sp.ind)) 
+                sp.ind <- order(wascores(order(site.ind), x))
+            pltree <- use
+        }
+        else if (is.list(use)) {
+            tmp <- scores(use, choices = 1, display = "sites")
+            if (is.null(site.ind)) 
+                site.ind <- order(tmp)
+            if (is.null(sp.ind)) 
+                sp.ind <- try(order(scores(use, choices = 1, 
+                                           display = "species")))
+            if (inherits(sp.ind, "try-error")) 
+                sp.ind <- order(wascores(tmp, x))
+        }
+        else if (is.matrix(use)) {
+            tmp <- scores(use, choices = 1, display = "sites")
+            if (is.null(site.ind)) 
+                site.ind <- order(tmp)
+            if (is.null(sp.ind)) 
+                sp.ind <- order(wascores(tmp, x))
+        }
+    }
+    ## see if sp.ind is a dendrogram or hclust tree
+    if (inherits(sp.ind, c("hclust", "dendrogram", "twins"))) {
+        if (inherits(sp.ind, "twins"))
+            require("cluster") || stop("package cluster needed to handle 'sp.ind'")
+        if (!inherits(sp.ind, "dendrogram"))
+            sp.ind <- as.dendrogram(sp.ind)
+        sptree <- sp.ind
+        ## Consider reordering species tree
+        if (isTRUE(Colv) && !is.null(site.ind)) {
+            sptree <- reorder(sptree, wascores(order(site.ind), x),
+                                  agglo.FUN = mean)
+        } else if (length(Colv) > 1) {
+            if (length(Colv) != ncol(x))
+                stop(gettextf("Colv has length %d, but 'x' has %d columns",
+                              length(Colv), ncol(x)))
+            sptree <- reorder(sptree, Colv, agglo.FUN = mean)
+        }
+        sp.ind <- seq_len(ncol(x))
+        names(sp.ind) <- colnames(x)
+        sp.ind <- sp.ind[labels(sptree)]
+        ## reverse: origin in the upper left corner
+        sptree <- rev(sptree)
+    }
+    if (!is.null(sp.ind) && is.logical(sp.ind))
+        sp.ind <- (1:ncol(x))[sp.ind]
+    if (!is.null(site.ind) && is.logical(site.ind))
+        site.ind <- (1:nrow(x))[site.ind]
+    if (is.null(sp.ind)) 
+        sp.ind <- 1:ncol(x)
+    if (is.null(site.ind)) 
+        site.ind <- 1:nrow(x)
+    if (!missing(select)) {
+        if (!is.na(pltree))
+            stop("sites cannot be 'select'ed with dendrograms or hclust trees")
+        if (!is.logical(select))
+            select <- sort(site.ind) %in% select
+        stake <- colSums(x[select, , drop = FALSE]) > 0
+        site.ind <- site.ind[select[site.ind]]
+        site.ind <- site.ind[!is.na(site.ind)]
+    }
+    else {
+        stake <- colSums(x[site.ind, ]) > 0
+    }
+    sp.ind <- sp.ind[stake[sp.ind]]
+    ## heatmap will reorder items by dendrogram so that we need to
+    ## give indices in the unsorted order if rows or columns have a
+    ## dendrogram
+    if (is.na(pltree[1]))
+        rind <- site.ind
+    else
+        rind <- sort(site.ind)
+    if (is.na(sptree[1]))
+        ## reverse: origin in the upper left corner
+        cind <- rev(sp.ind)
+    else
+        cind <- sort(sp.ind)
+    ## we assume t() changes data.frame to a matrix
+    x <- t(x[rind, cind])
+    sp.nam <- rownames(x)
+    sp.len <- max(nchar(sp.nam))
+    heatmap((max(x) - x), Rowv = sptree, Colv = pltree,
+             scale = "none", ...)
+    out <- list(sites = site.ind, species = sp.ind)
+    invisible(out)
+}
diff --git a/R/text.cca.R b/R/text.cca.R
index 942ba79..87ce7dd 100644
--- a/R/text.cca.R
+++ b/R/text.cca.R
@@ -1,6 +1,6 @@
 `text.cca` <-
     function (x, display = "sites", labels, choices = c(1, 2), scaling = 2,
-              arrow.mul, head.arrow = 0.05, select, const, ...)
+              arrow.mul, head.arrow = 0.05, select, const, axis.bp = TRUE, ...)
 {
     formals(arrows) <- c(formals(arrows), alist(... = ))
     if (length(display) > 1)
@@ -30,10 +30,12 @@
         arrows(0, 0, pts[, 1], pts[, 2], length = head.arrow,
                ...)
         pts <- pts * 1.1
-        axis(3, at = c(-arrow.mul, 0, arrow.mul), labels = rep("",
-                                                  3))
-        axis(4, at = c(-arrow.mul, 0, arrow.mul), labels = c(-1,
-                                                  0, 1))
+        if (axis.bp) {
+            axis(side = 3, at = c(-arrow.mul, 0, arrow.mul),
+                 labels = rep("", 3))
+            axis(side = 4, at = c(-arrow.mul, 0, arrow.mul),
+                 labels = c(-1, 0, 1))
+        }
     }
     text(pts, labels = rownames(pts), ...)
     invisible()
diff --git a/R/vegemite.R b/R/vegemite.R
index 7b28d5b..eb763a0 100644
--- a/R/vegemite.R
+++ b/R/vegemite.R
@@ -1,4 +1,4 @@
-"vegemite" <-
+`vegemite` <-
     function (x, use, scale, sp.ind = NULL, site.ind = NULL, zero = ".", 
               select, ...) 
 {
@@ -9,7 +9,11 @@
             if (is.null(sp.ind)) 
                 sp.ind <- order(wascores(use, x))
         }
-        else if (inherits(use, "hclust")) {
+        else if (inherits(use, c("hclust", "twins"))) {
+            if (inherits(use, "twins")) {
+                require(cluster) || stop("package cluster needed for 'use'")
+                use <- as.hclust(use)
+            }
             if (is.null(site.ind)) 
                 site.ind <- use$order
             if (is.null(sp.ind)) 
diff --git a/R/wcmdscale.R b/R/wcmdscale.R
index a01f7b1..ce6aa72 100644
--- a/R/wcmdscale.R
+++ b/R/wcmdscale.R
@@ -8,6 +8,9 @@ function(d, k, eig = FALSE, add = FALSE, x.ret = FALSE, w)
     }
     if (add)
         .NotYetUsed("add")
+    ## Force eig=TRUE if add, x.ret or !missing(w)
+    if(x.ret)
+        eig <- TRUE
     ZERO <- sqrt(.Machine$double.eps)
     if (!inherits(d, "dist")) {
         op <- options(warn = 2)
@@ -47,7 +50,7 @@ function(d, k, eig = FALSE, add = FALSE, x.ret = FALSE, w)
     ## GOF for real and all axes
     GOF <- c(sum(ev)/sum(abs(e$values)),
              sum(ev)/sum(e$values[e$values > 0]))
-    if (eig || x.ret || add) {
+    if (eig || x.ret) {
         colnames(points) <- paste("Dim", seq_len(NCOL(points)), sep="") 
         out <- list(points = points, eig = if (eig) e$values,
                     x = if (x.ret) m, ac = NA, GOF = GOF, weights = w,
diff --git a/inst/ChangeLog b/inst/ChangeLog
index b5f8fdb..088da3c 100644
--- a/inst/ChangeLog
+++ b/inst/ChangeLog
@@ -1,7 +1,26 @@
-$Date: 2013-02-11 09:35:39 +0200 (Mon, 11 Feb 2013) $
+$Date: 2013-03-09 17:35:10 +0200 (Sat, 09 Mar 2013) $
 
 VEGAN RELEASE VERSIONS at http://cran.r-project.org/
 
+Version 2.0-7 (opened February 17, 2013)
+
+	* merge r2476: take back part of 2434 and return matrix from
+	wcmdscale unless eigenvalues are requested.
+	* merge r2469, 2470: do not use u.eig & v.eig.
+	* merge r2468: tabasco checks against negative data.
+	* merge r2462: fix "asymp" model in fitspecaccum.
+	* merge r2458: restructure fitspecaccum.
+	* merge r2453: nestedtemp failed with fill < 0.38%.
+	* merge r2452: plot/text.cca gained axis.bp = TRUE argument. 
+	* merge r2448 (partly), 2449: print.monoMDS clearer about
+	convergence. Only this part merged: metaMDSiter untouched.
+	* handcraft r2447: metaMDSiter gained argument 'maxit'.
+	* merge r2443: edit cca.object.Rd.
+	* merge r2434: return wcmdscale object always with non-default
+	arguments.
+	* merge r2432: edit cca.Rd.
+	* merge r2431,2433,2435 thru 2442: add tabasco().
+
 Version 2.0-6 (released February 11, 2013)
 
 	* merge 2420, 2425: cca cross references.
diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd
index c469d72..98e8778 100644
--- a/inst/NEWS.Rd
+++ b/inst/NEWS.Rd
@@ -2,6 +2,69 @@
 \title{vegan News}
 \encoding{UTF-8}
 
+\section{Changes in version 2.0.7}{
+
+  \subsection{NEW FUNCTIONS}{
+    \itemize{
+
+      \item \code{tabasco()} is a new function for graphical display
+      of community data matrix.  Technically it is an interface to \R
+      \code{heatmap}, but its use is closer to \pkg{vegan} function
+      \code{vegemite}. The function can reorder the community data
+      matrix similarly as \code{vegemite}, for instance, by ordination
+      results. Unlike \code{heatmap}, it only displays dendrograms if
+      supplied by the user, and it defaults to re-order the
+      dendrograms by correspondence analysis.  Species are ordered to
+      match site ordering or like determined by the user.
+
+    }
+  } % new functions
+
+  \subsection{BUG FIXES}{
+    \itemize{
+
+      \item Function \code{fitspecaccum(..., model = "asymp")} fitted
+      logistic model instead of asymptotic model (or the same as 
+      \code{model = "logis"}).
+
+      \item \code{nestedtemp()} failed with very sparse data (fill
+      \eqn{< 0.38}\%).
+
+    }
+  } % bug fixes 
+
+  \subsection{NEW FEATURES}{
+    \itemize{
+
+      \item The \code{plot} function for constrained ordination
+      results (\code{cca}, \code{rda}, \code{capscale}) gained
+      argument \code{axis.bp} (defaults \code{TRUE}) which can be used
+      to suppress axis scale for biplot arrays.
+
+      \item Number of iterations in nonmetric multidimensional scaling
+      (NMDS) can be set with keyword \code{maxit} (defaults
+      \code{200}) in \code{metaMDS}.
+
+    }
+  } % new features
+
+  \subsection{DEPRECATED}{
+
+    \itemize{
+
+      \item The result objects of \code{cca}, \code{rda} and
+      \code{capscale} will no longer have scores \code{u.eig},
+      \code{v.eig} and \code{wa.eig} in the future versions of
+      \pkg{vegan}. This change does not influence normal usage,
+      because \pkg{vegan} functions do not need these items.  However,
+      external scripts and packages may need changes in the future
+      versions of \pkg{vegan}.
+
+    }   
+  } % deprecated
+
+} % vegan 2.0-7
+
 \section{Changes in version 2.0-6}{
 
   \subsection{BUG FIXES}{
diff --git a/inst/doc/FAQ-vegan.pdf b/inst/doc/FAQ-vegan.pdf
index 0539b37..1115bbf 100644
Binary files a/inst/doc/FAQ-vegan.pdf and b/inst/doc/FAQ-vegan.pdf differ
diff --git a/inst/doc/NEWS.html b/inst/doc/NEWS.html
index 35e42fa..cdf3c15 100644
--- a/inst/doc/NEWS.html
+++ b/inst/doc/NEWS.html
@@ -8,6 +8,82 @@
 
 <h2>vegan News</h2>
 
+<h3>Changes in version 2.0.7</h3>
+
+
+
+<h4>NEW FUNCTIONS</h4>
+
+
+<ul>
+<li> <p><code>tabasco()</code> is a new function for graphical display
+of community data matrix.  Technically it is an interface to <font face="Courier New,Courier" color="#666666"><b>R</b></font>
+<code>heatmap</code>, but its use is closer to <span class="pkg">vegan</span> function
+<code>vegemite</code>. The function can reorder the community data
+matrix similarly as <code>vegemite</code>, for instance, by ordination
+results. Unlike <code>heatmap</code>, it only displays dendrograms if
+supplied by the user, and it defaults to re-order the
+dendrograms by correspondence analysis.  Species are ordered to
+match site ordering or like determined by the user.
+</p>
+</li></ul>
+
+ 
+
+
+<h4>BUG FIXES</h4>
+
+
+<ul>
+<li><p> Function <code>fitspecaccum(..., model = "asymp")</code> fitted
+logistic model instead of asymptotic model (or the same as 
+<code>model = "logis"</code>).
+</p>
+</li>
+<li> <p><code>nestedtemp()</code> failed with very sparse data (fill
+<i>< 0.38</i>%).
+</p>
+</li></ul>
+
+ 
+
+
+<h4>NEW FEATURES</h4>
+
+
+<ul>
+<li><p> The <code>plot</code> function for constrained ordination
+results (<code>cca</code>, <code>rda</code>, <code>capscale</code>) gained
+argument <code>axis.bp</code> (defaults <code>TRUE</code>) which can be used
+to suppress axis scale for biplot arrays.
+</p>
+</li>
+<li><p> Number of iterations in nonmetric multidimensional scaling
+(NMDS) can be set with keyword <code>maxit</code> (defaults
+<code>200</code>) in <code>metaMDS</code>.
+</p>
+</li></ul>
+
+ 
+
+
+<h4>DEPRECATED</h4>
+
+
+<ul>
+<li><p> The result objects of <code>cca</code>, <code>rda</code> and
+<code>capscale</code> will no longer have scores <code>u.eig</code>,
+<code>v.eig</code> and <code>wa.eig</code> in the future versions of
+<span class="pkg">vegan</span>. This change does not influence normal usage,
+because <span class="pkg">vegan</span> functions do not need these items.  However,
+external scripts and packages may need changes in the future
+versions of <span class="pkg">vegan</span>.
+</p>
+</li></ul>
+   
+ 
+
+
 <h3>Changes in version 2.0-6</h3>
 
 
diff --git a/inst/doc/decision-vegan.pdf b/inst/doc/decision-vegan.pdf
index 1545dbf..bc5376e 100644
Binary files a/inst/doc/decision-vegan.pdf and b/inst/doc/decision-vegan.pdf differ
diff --git a/inst/doc/decision-vegan.tex b/inst/doc/decision-vegan.tex
index eb0facd..3418c9f 100644
--- a/inst/doc/decision-vegan.tex
+++ b/inst/doc/decision-vegan.tex
@@ -23,8 +23,8 @@ another document.
 %% hijack Address for version info
 \Address{$ $Id: decision-vegan.Rnw 1709 2011-08-10 15:48:21Z jarioksa $ $
   processed with vegan
-2.0-6
-in R Under development (unstable) (2013-02-10 r61900) on \today}
+2.0-7
+in R Under development (unstable) (2013-03-19 r62316) on \today}
 \Footername{About this version}
 
 %% need no \usepackage{Sweave.sty}
@@ -500,17 +500,17 @@ Call: cca(formula = varespec[i, ] ~ Al + K, data = varechem)
 
               Inertia Proportion Rank
 Total         2.08320    1.00000     
-Constrained   0.15362    0.07374    2
-Unconstrained 1.92958    0.92626   21
+Constrained   0.15677    0.07525    2
+Unconstrained 1.92643    0.92475   21
 Inertia is mean squared contingency coefficient 
 
 Eigenvalues for constrained axes:
    CCA1    CCA2 
-0.10630 0.04732 
+0.09762 0.05915 
 
 Eigenvalues for unconstrained axes:
     CA1     CA2     CA3     CA4     CA5     CA6     CA7     CA8 
-0.49464 0.32096 0.21594 0.18515 0.17457 0.11062 0.10434 0.08368 
+0.48818 0.28764 0.22823 0.19523 0.17686 0.11253 0.10810 0.08657 
 (Showed only 8 of all 21 unconstrained eigenvalues)
 \end{Soutput}
 \end{Schunk}
@@ -537,11 +537,11 @@ R> proc <- procrustes(scores(tmp1, dis="lc", choi=1:14), scores(tmp2, dis="lc",
 R> max(residuals(proc))
 \end{Sinput}
 \begin{Soutput}
-[1] 2.646997e-14
+[1] 3.115295e-14
 \end{Soutput}
 \end{Schunk}
 In \code{cca} the difference would be somewhat larger than now
-observed 2.647e-14 because site
+observed 3.1153e-14 because site
 weights used for environmental variables are shuffled with the species
 data.
 
diff --git a/inst/doc/diversity-vegan.pdf b/inst/doc/diversity-vegan.pdf
index 11eaff4..bd395ac 100644
Binary files a/inst/doc/diversity-vegan.pdf and b/inst/doc/diversity-vegan.pdf differ
diff --git a/inst/doc/diversity-vegan.tex b/inst/doc/diversity-vegan.tex
index 3ed3613..9cde6e9 100644
--- a/inst/doc/diversity-vegan.tex
+++ b/inst/doc/diversity-vegan.tex
@@ -31,8 +31,8 @@
 
 %% misuse next for scm data
 \Address{$ $Id: diversity-vegan.Rnw 2346 2013-01-07 11:42:36Z jarioksa $ $
-  processed with vegan 2.0-6
-  in R Under development (unstable) (2013-02-10 r61900) on \today}
+  processed with vegan 2.0-7
+  in R Under development (unstable) (2013-03-19 r62316) on \today}
 \Footername{About this version}
 
 %% need no \usepackage{Sweave}
@@ -352,16 +352,16 @@ R> fish
 \end{Sinput}
 \begin{Soutput}
 Fisher log series model
-No. of species: 102 
+No. of species: 94 
 
       Estimate Std. Error
-alpha   44.064     5.5838
+alpha   34.823     4.4404
 \end{Soutput}
 \end{Schunk}
 \begin{SCfigure}
 \includegraphics{diversity-vegan-018}
 \caption{Fisher's log-series fitted to one randomly selected site
-  (41).}
+  (10).}
 \label{fig:fisher}
 \end{SCfigure}
 We already saw $\alpha$ as a diversity index.  Now we also obtained
@@ -379,7 +379,7 @@ R> confint(fish)
 \end{Sinput}
 \begin{Soutput}
    2.5 %   97.5 % 
-34.21748 56.25208 
+26.97514 44.48423 
 \end{Soutput}
 \end{Schunk}
 
@@ -403,7 +403,7 @@ the lower octave.
 Function \code{prestondistr} directly
 maximizes truncated log-normal likelihood without binning data, and it
 is the recommended alternative.  Log-normal models  usually fit poorly
-to the BCI data, but here our random plot (number 41):
+to the BCI data, but here our random plot (number 10):
 \begin{Schunk}
 \begin{Sinput}
 R> prestondistr(BCI[k,])
@@ -411,15 +411,15 @@ R> prestondistr(BCI[k,])
 \begin{Soutput}
 Preston lognormal model
 Method: maximized likelihood to log2 abundances 
-No. of species: 102 
+No. of species: 94 
 
       mode      width         S0 
- 0.6954283  1.7260910 28.1654616 
+ 0.9941697  1.8317765 23.7539289 
 
 Frequencies by Octave
-                0        1        2       3        4        5
-Observed 22.50000 32.00000 21.00000 13.5000 8.000000 5.000000
-Fitted   25.96983 27.73039 21.16784 11.5513 4.506289 1.256727
+                0        1        2        3       4        5         6
+Observed 17.50000 25.50000 19.50000 15.50000 8.50000 5.500000 2.0000000
+Fitted   20.50087 23.75381 20.42975 13.04252 6.18057 2.174024 0.5676345
 \end{Soutput}
 \end{Schunk}
 
@@ -458,20 +458,20 @@ R> rad
 \end{Sinput}
 \begin{Soutput}
 RAD models, family poisson 
-No. of species 102, total abundance 402
-
-           par1      par2    par3    Deviance AIC      BIC     
-Null                                  59.9800 342.5388 342.5388
-Preemption  0.040337                  47.8801 332.4389 335.0639
-Lognormal   0.80833   1.0772          24.2781 310.8369 316.0869
-Zipf        0.11928  -0.7903          36.6726 323.2314 328.4813
-Mandelbrot  2.3922   -1.5273  9.0795   7.0992 295.6580 303.5330
+No. of species 94, total abundance 483
+
+           par1      par2     par3    Deviance AIC      BIC     
+Null                                   77.2737 353.6126 353.6126
+Preemption  0.048132                   62.7210 341.0598 343.6031
+Lognormal   0.97341   1.1723           20.4770 300.8158 305.9024
+Zipf        0.14073  -0.84897          39.7066 320.0454 325.1320
+Mandelbrot  1.9608   -1.522    6.7247   9.8353 292.1741 299.8040
 \end{Soutput}
 \end{Schunk}
 \begin{SCfigure}
 \includegraphics{diversity-vegan-022}
 \caption{Ranked abundance distribution models for a random plot
-  (no. 41).  The best model has the lowest \textsc{aic}.}
+  (no. 10).  The best model has the lowest \textsc{aic}.}
 \label{fig:rad}
 \end{SCfigure}
 
@@ -776,8 +776,8 @@ R> s <- sample(nrow(BCI), 25)
 R> specpool(BCI[s,])
 \end{Sinput}
 \begin{Soutput}
-    Species chao  chao.se  jack1 jack1.se    jack2     boot  boot.se  n
-All     203  252 26.30827 229.88 7.124942 248.5867 214.6588 3.710797 25
+    Species chao  chao.se  jack1 jack1.se  jack2     boot  boot.se  n
+All     203  227 12.96148 226.04 8.022369 237.54 213.6789 4.123431 25
 \end{Soutput}
 \end{Schunk}
 
@@ -794,12 +794,12 @@ two of these methods:
 R> estimateR(BCI[k,])
 \end{Sinput}
 \begin{Soutput}
-                 41
-S.obs    102.000000
-S.chao1  151.500000
-se.chao1  21.334825
-S.ACE    161.646487
-se.ACE     6.839367
+                 10
+S.obs     94.000000
+S.chao1  129.000000
+se.chao1  17.243915
+S.ACE    132.601934
+se.ACE     6.153456
 \end{Soutput}
 \end{Schunk}
 Chao's method is similar as above, but uses another, ``unbiased''
@@ -842,14 +842,14 @@ R> veiledspec(prestondistr(BCI[k,]))
 \end{Sinput}
 \begin{Soutput}
 Extrapolated     Observed       Veiled 
-   121.86261    102.00000     19.86261 
+   109.06813     94.00000     15.06813 
 \end{Soutput}
 \begin{Sinput}
 R> veiledspec(BCI[k,])
 \end{Sinput}
 \begin{Soutput}
 Extrapolated     Observed       Veiled 
-   146.08199    102.00000     44.08199 
+   121.08212     94.00000     27.08212 
 \end{Soutput}
 \end{Schunk}
 
diff --git a/inst/doc/intro-vegan.pdf b/inst/doc/intro-vegan.pdf
index 4db5757..b04d784 100644
Binary files a/inst/doc/intro-vegan.pdf and b/inst/doc/intro-vegan.pdf differ
diff --git a/inst/doc/intro-vegan.tex b/inst/doc/intro-vegan.tex
index 3b7abfa..c3e7624 100644
--- a/inst/doc/intro-vegan.tex
+++ b/inst/doc/intro-vegan.tex
@@ -36,8 +36,8 @@
 %% misuse of the address field for revision data
 \Address{$ $Id: intro-vegan.Rnw 2346 2013-01-07 11:42:36Z jarioksa $ $
   processed with vegan
-2.0-6
-in R Under development (unstable) (2013-02-10 r61900) on \today}
+2.0-7
+in R Under development (unstable) (2013-03-19 r62316) on \today}
 \Footername{About this version}
 
 %% need no \usepackage{Sweave}
@@ -127,8 +127,13 @@ R> ord <- metaMDS(dune)
 \end{Sinput}
 \begin{Soutput}
 Run 0 stress 0.1192678 
-Run 1 stress 0.1192685 
-... procrustes: rmse 0.0004731361  max resid 0.001456133 
+Run 1 stress 0.1183192 
+... New best solution
+... procrustes: rmse 0.02026651  max resid 0.06495143 
+Run 2 stress 0.2341212 
+Run 3 stress 0.1183186 
+... New best solution
+... procrustes: rmse 0.0001039632  max resid 0.0003313083 
 *** Solution reached
 \end{Soutput}
 \begin{Sinput}
@@ -144,9 +149,9 @@ Data:     dune
 Distance: bray 
 
 Dimensions: 2 
-Stress:     0.1192678 
+Stress:     0.1183186 
 Stress type 1, weak ties
-Two convergent solutions found after 1 tries
+Two convergent solutions found after 3 tries
 Scaling: centring, PC rotation, halfchange scaling 
 Species: expanded scores based on ‘dune’ 
 \end{Soutput}
@@ -305,7 +310,7 @@ R> ord.fit
 ***VECTORS
 
      NMDS1   NMDS2     r2  Pr(>r)  
-A1 0.99008 0.14052 0.3798 0.01299 *
+A1 0.96474 0.26320 0.3649 0.01898 *
 ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 P values based on 1000 permutations.
@@ -314,14 +319,14 @@ P values based on 1000 permutations.
 
 Centroids:
                NMDS1   NMDS2
-ManagementBF -0.4474 -0.0193
-ManagementHF -0.2689 -0.1256
-ManagementNM  0.2976  0.5798
-ManagementSF  0.1502 -0.4654
+ManagementBF -0.4534 -0.0102
+ManagementHF -0.2636 -0.1282
+ManagementNM  0.2958  0.5790
+ManagementSF  0.1506 -0.4670
 
 Goodness of fit:
-               r2  Pr(>r)  
-Management 0.4134 0.01499 *
+               r2  Pr(>r)   
+Management 0.4134 0.00999 **
 ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 P values based on 1000 permutations.
@@ -349,12 +354,12 @@ Link function: identity
 
 Formula:
 y ~ s(x1, x2, k = knots)
-<environment: 0x2a84578>
+<environment: 0x41bc858>
 
 Estimated degrees of freedom:
 2  total = 3 
 
-GCV score: 3.872935
+GCV score: 3.965441
 \end{Soutput}
 \end{Schunk}
 \begin{SCfigure}
@@ -495,7 +500,7 @@ Terms added sequentially (first to last)
 
 Model: cca(formula = dune ~ A1 + Management, data = dune.env)
            Df  Chisq      F N.Perm Pr(>F)   
-A1          1 0.2248 2.5245    199  0.010 **
+A1          1 0.2248 2.5245    199  0.005 **
 Management  3 0.5550 2.0780    199  0.005 **
 Residual   15 1.3355                        
 ---
@@ -516,7 +521,7 @@ Marginal effects of terms
 
 Model: cca(formula = dune ~ A1 + Management, data = dune.env)
            Df  Chisq      F N.Perm  Pr(>F)   
-A1          1 0.1759 1.9761   1299 0.03538 * 
+A1          1 0.1759 1.9761   1399 0.03429 * 
 Management  3 0.5550 2.0780    199 0.00500 **
 Residual   15 1.3355                         
 ---
@@ -531,12 +536,12 @@ R> anova(ord, by="axis", perm=500)
 \end{Sinput}
 \begin{Soutput}
 Model: cca(formula = dune ~ A1 + Management, data = dune.env)
-         Df  Chisq      F N.Perm  Pr(>F)   
-CCA1      1 0.3187 3.5801    199 0.00500 **
-CCA2      1 0.2372 2.6640    299 0.01333 * 
-CCA3      1 0.1322 1.4845    199 0.14000   
-CCA4      1 0.0917 1.0297     99 0.33000   
-Residual 15 1.3355                         
+         Df  Chisq      F N.Perm Pr(>F)   
+CCA1      1 0.3187 3.5801    199  0.005 **
+CCA2      1 0.2372 2.6640    199  0.010 **
+CCA3      1 0.1322 1.4845     99  0.210   
+CCA4      1 0.0917 1.0297     99  0.370   
+Residual 15 1.3355                        
 ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 \end{Soutput}
@@ -591,7 +596,7 @@ Terms added sequentially (first to last)
 
 Model: cca(formula = dune ~ A1 + Management + Condition(Moisture), data = dune.env)
            Df  Chisq      F N.Perm Pr(>F)  
-A1          1 0.1154 1.4190     99   0.11  
+A1          1 0.1154 1.4190     99   0.09 .
 Management  3 0.3954 1.6205     99   0.02 *
 Residual   12 0.9761                       
 ---
@@ -612,7 +617,7 @@ Permutations stratified within 'Moisture'
 
 Model: cca(formula = dune ~ A1 + Management + Condition(Moisture), data = dune.env)
            Df  Chisq      F N.Perm Pr(>F)   
-A1          1 0.1154 1.4190     99   0.24   
+A1          1 0.1154 1.4190     99   0.38   
 Management  3 0.3954 1.6205     99   0.01 **
 Residual   12 0.9761                        
 ---
diff --git a/man/cca.Rd b/man/cca.Rd
index 31d4a9d..59cbcd0 100644
--- a/man/cca.Rd
+++ b/man/cca.Rd
@@ -105,9 +105,9 @@
   frames).
   The formula can include a special term \code{Condition}
   for conditioning variables (``covariables'') ``partialled out'' before
-  analysis.  So the following commands are equivalent: \code{cca(X, Y,
-    Z)}, \code{cca(X ~ Y + Condition(Z))}, where \code{Y} and \code{Z}
-  refer to constraints and conditions matrices respectively.
+  analysis.  So the following commands are equivalent:
+  \code{cca(X, Y, Z)},  \code{cca(X ~ Y + Condition(Z))}, where \code{Y}
+  and \code{Z} refer to constraints and conditions matrices respectively.
 
   Constrained correspondence analysis is indeed a constrained method:
   CCA does not try to display all variation in the
@@ -198,12 +198,12 @@
   This help page describes two constrained ordination functions,
   \code{cca} and \code{rda}.  A related method, distance-based
   redundancy analysis (dbRDA) is described separately
-  (\code{\link{capscale}}). All these function return similar objects
+  (\code{\link{capscale}}). All these functions return similar objects
   (described in \code{\link{cca.object}}). There are numerous support
-  functions that can used to access the result object. In the list
-  below, functions of type \code{cca} will handle all ordination
-  objects, and functions of \code{rda} only handle \code{rda} and
-  \code{\link{capscale}} results.
+  functions that can be used to access the result object. In the list
+  below, functions of type \code{cca} will handle all three constrained
+  ordination objects, and functions of \code{rda} only handle \code{rda}
+  and \code{\link{capscale}} results.
 
   The main plotting functions are \code{\link{plot.cca}} for all
   methods, and \code{\link{biplot.rda}} for RDA and dbRDA.  However,
diff --git a/man/cca.object.Rd b/man/cca.object.Rd
index d7e1b93..05e0346 100644
--- a/man/cca.object.Rd
+++ b/man/cca.object.Rd
@@ -177,19 +177,25 @@
   }
 }
   
-\seealso{The description here provides a hacker's interface.  For more
-  user friendly access to the \code{cca} object see
+\seealso{The description here provides a hacker's interface.  User
+  level functions for further analysis and handling of \code{cca}
+  objects are described in this section in \code{\link{cca}}. Also for
+  a hacker interface, it may be better to use following low level
+  functions to access the results:
+  \code{\link{scores.cca}} (which also scales results), 
+  \code{\link{predict.cca}} (which can also use \code{newdata}), 
+  \code{\link{fitted.cca}}, \code{\link{residuals.cca}},
   \code{\link{alias.cca}}, \code{\link{coef.cca}},
-  \code{\link{deviance.cca}}, \code{\link{predict.cca}},
-  \code{\link{scores.cca}}, 
-  \code{\link{summary.cca}},  \code{\link{vif.cca}},
-  \code{\link{weights.cca}}, \code{\link{spenvcor}} or \code{rda}
+  \code{\link{model.frame.cca}}, \code{\link{model.matrix.cca}},
+  \code{\link{deviance.cca}}, \code{\link{eigenvals.cca}},
+  \code{\link{RsquareAdj.cca}}, 
+  \code{\link{weights.cca}}, \code{\link{nobs.cca}}, or \code{rda}
   variants of these functions.
   You can use \code{\link{as.mlm}} to cast a \code{cca.object} into
   result of multiple response
   linear model (\code{\link{lm}}) in order to more easily find some
   statistics (which in principle could be directly found from the
-  \code{cca.object} as well). 
+  \code{cca} object as well). 
 
   This section in \code{\link{cca}} gives a more complete list of
   methods to handle the constrained ordination result object.
diff --git a/man/metaMDS.Rd b/man/metaMDS.Rd
index 93c26a8..59cc266 100644
--- a/man/metaMDS.Rd
+++ b/man/metaMDS.Rd
@@ -41,7 +41,7 @@ metaMDSdist(comm, distance = "bray", autotransform = TRUE,
     noshare = TRUE, trace = 1, commname, zerodist = "ignore", 
     distfun = vegdist, ...)
 metaMDSiter(dist, k = 2, trymax = 20, trace = 1, plot = FALSE, 
-    previous.best, engine = "monoMDS", ...)   
+    previous.best, engine = "monoMDS", maxit = 200, ...)   
 initMDS(x, k=2)
 postMDS(X, dist, pc=TRUE, center=TRUE, halfchange, threshold=0.8,
     nthreshold=10, plot=FALSE, ...)
@@ -119,6 +119,11 @@ metaMDSredist(object, ...)
  \item{distfun}{Dissimilarity function. Any function returning a
    \code{dist} object and accepting argument \code{method} can be used
    (but some extra arguments may cause name conflicts).}
+
+ \item{maxit}{Maximum number of iterations in the single NMDS run;
+   passed to the \code{engine} function \code{\link{monoMDS}} or
+   \code{\link[MASS]{isoMDS}}.}
+
  \item{dist}{Dissimilarity matrix used in multidimensional scaling. }
   \item{pc}{Rotate to principal components. }
   \item{center}{Centre the configuration. }
diff --git a/man/plot.cca.Rd b/man/plot.cca.Rd
index ae83e00..7506054 100644
--- a/man/plot.cca.Rd
+++ b/man/plot.cca.Rd
@@ -21,9 +21,9 @@
 \method{plot}{cca}(x, choices = c(1, 2), display = c("sp", "wa", "cn"),
          scaling = 2, type, xlim, ylim, const, ...)
 \method{text}{cca}(x, display = "sites", labels, choices = c(1, 2), scaling = 2,
-    arrow.mul, head.arrow = 0.05, select, const, ...)
+    arrow.mul, head.arrow = 0.05, select, const, axis.bp = TRUE, ...)
 \method{points}{cca}(x, display = "sites", choices = c(1, 2), scaling = 2,
-    arrow.mul, head.arrow = 0.05, select, const, ...)
+    arrow.mul, head.arrow = 0.05, select, const, axis.bp = TRUE, ...)
 \method{scores}{cca}(x, choices=c(1,2), display=c("sp","wa","cn"), scaling=2, ...)
 \method{scores}{rda}(x, choices=c(1,2), display=c("sp","wa","cn"), scaling=2, 
     const, ...)
@@ -74,6 +74,7 @@
     \samp{decision-vegan.pdf} with \code{\link{vegandocs}} for details
     and discussion). If \code{const} is a vector of two items, the first
     is used for species, and the second item for site scores.}
+  \item{axis.bp}{Draw \code{\link{axis}} for biplot arrows.}
   \item{axes}{Number of axes in summaries.}
   \item{digits}{Number of digits in output.}
   \item{n, head, tail}{Number of rows printed from the head and tail of
diff --git a/man/vegemite.Rd b/man/vegemite.Rd
index dabb0af..17f1a54 100644
--- a/man/vegemite.Rd
+++ b/man/vegemite.Rd
@@ -1,70 +1,107 @@
 \name{vegemite}
 \alias{vegemite}
+\alias{tabasco}
 \alias{coverscale}
 
-\title{Prints a Compact, Ordered Vegetation Table }
+\title{Display Compact Ordered Community Tables }
 \description{
-  The function prints a compact vegetation table, where species are
-  rows, and each site takes only one column without spaces.  The
-  vegetation table can be ordered by explicit indexing, by environmental
-  variables or results from an ordination or cluster analysis.
+  Functions \code{vegemite} and \code{tabasco} display compact
+  community tables.  Function \code{vegemite} prints text tables where
+  species are rows, and each site takes only one column without
+  spaces.  Function \code{tabasco} provides interface for
+  \code{\link{heatmap}} for a colour \code{\link{image}} of the
+  data. The community table can be ordered by explicit indexing, by
+  environmental variables or results from an ordination or cluster
+  analysis.
 }
 \usage{
 vegemite(x, use, scale, sp.ind, site.ind, zero=".", select ,...)
+tabasco(x, use, sp.ind = NULL, site.ind = NULL, select,
+    Rowv = TRUE, Colv = TRUE, ...) 
 coverscale(x, scale=c("Braun.Blanquet", "Domin", "Hult", "Hill", "fix","log"),
            maxabund)
 }
 
 \arguments{
-  \item{x}{Vegetation data. }
+  \item{x}{Community data. }
   \item{use}{Either a vector, or an object from \code{cca},
     \code{decorana} \emph{etc.} or \code{hclust} or a
     \code{\link{dendrogram}} for ordering sites and species.} 
-  \item{sp.ind}{Species indices. }
-  \item{site.ind}{Site indices. }
+  \item{sp.ind, site.ind}{Species and site indices. In \code{tabasco},
+    these can also be \code{\link{hclust}} tree,
+    \code{\link[cluster]{agnes}} clusterings or
+    \code{\link{dendrogram}}s. }
   \item{zero}{Character used for zeros. }
   \item{select}{Select a subset of sites.  This can be a logical vector
     (\code{TRUE} for selected sites), or a vector of indices of selected
     sites.  The order of indices does not influence results, but you
     must specify \code{use} or \code{site.ind} to reorder sites.
-    }
+  }
+  \item{Rowv, Colv}{Re-order dendrograms for the rows (sites) or
+    columns (species) of \code{x}.  If the \code{Rowv = TRUE}, row
+    dendrograms are ordered by the first axis of correspondence
+    analysis, and when \code{Colv = TRUE} column dendrograms by the
+    weighted average (\code{\link{wascores}}) of the row order.
+    Alternatively, the arguments can be vectors that are used to
+    reorder the dendrogram. }
   \item{scale}{Cover scale used (can be abbreviated).}
   \item{maxabund}{Maximum abundance used with \code{scale = "log"}.
     Data maximum in the \code{select}ed subset will be used if this is
     missing.}
-  \item{...}{Arguments passed to \code{coverscale} (i.e., \code{maxabund}).}
+  \item{\dots}{Arguments passed to \code{coverscale} (i.e., \code{maxabund}) in
+    \code{vegemite} and to \code{\link{heatmap}} in \code{tabasco}.}
 }
 \details{
-  The function prints a traditional vegetation table.
-  Unlike in ordinary data matrices, species are used as rows and sites
-  as columns.  The table is printed in compact form:  only one character
+  The function \code{vegemite} prints a traditional community table.
+  The display is transposed, so that species are in rows and sites in
+  columns.  The table is printed in compact form: only one character
   can be used for abundance, and there are no spaces between
   columns. Species with no occurrences are dropped from the table.
 
-  The parameter \code{use} can be a vector or an object from
-  \code{\link{hclust}}, a \code{\link{dendrogram}} or any ordination
-  result recognized by \code{\link{scores}} (all ordination methods in
-  \pkg{vegan} and some of those not in \pkg{vegan}).
-  If \code{use} is a vector, it is used
-  for ordering sites.  If \code{use} is an object from ordination, both
-  sites and species are arranged by the first axis.  
-  When \code{use} is an
-  object from \code{\link{hclust}} or a \code{\link{dendrogram}}, the
-  sites are ordered similarly
-  as in the cluster dendrogram.
-  If ordination methods provide species scores, these are used for
-  ordering species.  In all cases where species scores are missing,
-  species are ordered by their weighted averages (\code{\link{wascores}})
-  on site scores. There is no natural, unique ordering in hierarchic
-  clustering, but in some cases species are still nicely ordered (please
-  note that you can \code{\link{reorder.dendrogram}} to have such a
-  natural order).
-  Alternatively, species and sites can be ordered explicitly giving
-  their indices or names in parameters \code{sp.ind} and
-  \code{site.ind}.  If these are given, they take precedence over
-  \code{use}. A subset of sites can be displayed using argument
-  \code{select}, but this cannot be used to order sites, but you still
-  must give \code{use} or \code{site.ind}.
+  Function \code{tabasco} produces a similar table as \code{vegemite}
+  using \code{\link{heatmap}}, where abundances are coded by
+  colours. The function can also display dendrograms for sites
+  (columns) or species if these are given as an argument (\code{use}
+  for sites, \code{sp.ind} for species).
+
+  The parameter \code{use} will be used to re-order output. The
+  \code{use} can be a vector or an object from \code{\link{hclust}} or
+  \code{\link[cluster]{agnes}}, a \code{\link{dendrogram}} or any
+  ordination result recognized by \code{\link{scores}} (all ordination
+  methods in \pkg{vegan} and some of those not in \pkg{vegan}). The
+  \code{\link{hclust}}, \code{\link[cluster]{agnes}} and
+  \code{\link{dendrogram}} must be for sites. The dendrogram is
+  displayed above the sites in \code{tabasco}, but is not shown in
+  \code{vegemite}.  No dendrogram for species is displayed, except
+  when given in \code{sp.ind}.
+
+  If \code{use} is a vector, it is used for ordering sites.  If
+  \code{use} is an object from ordination, both sites and species are
+  arranged by the first axis (provided that results are available both
+  also for species).  When \code{use} is an object from
+  \code{\link{hclust}}, \code{\link[cluster]{agnes}} or a
+  \code{\link{dendrogram}}, the sites are ordered similarly as in the
+  cluster dendrogram.  Function \code{tabasco} re-orders the
+  dendrogram if \code{Rowv = TRUE} or \code{Rowv} is a vector. Such
+  re-ordering is not available for \code{vegemite}, but it can be done
+  by hand using \code{\link{reorder.dendrogram}}.  In all cases where
+  species scores are missing, species are ordered by their weighted
+  averages (\code{\link{wascores}}) on site order.
+
+  Species and sites can be ordered explicitly giving their indices or
+  names in parameters \code{sp.ind} and \code{site.ind}.  If these are
+  given, they take precedence over \code{use}. A subset of sites can
+  be displayed using argument \code{select}, but this cannot be used
+  to order sites, but you still must give \code{use} or
+  \code{site.ind}.  However, \code{tabasco} makes two exceptions:
+  \code{site.ind} and \code{select} cannot be used when \code{use} is
+  a dendrogram (clustering result). In addition, the \code{sp.ind} can
+  be an \code{\link{hclust}} tree, \code{\link[cluster]{agnes}}
+  clustering or a \code{\link{dendrogram}}, and in that case the
+  dendrogram is plotted on the left side of the
+  \code{\link{heatmap}}. Phylogenetic trees cannot be directly used,
+  \code{\link[ape]{as.hclust.phylo}} (package \pkg{ape}) can transform
+  these to \code{\link{hclust}} trees. 
 
   If \code{scale} is given, \code{vegemite} calls
   \code{coverscale} to transform percent cover
@@ -88,13 +125,14 @@ coverscale(x, scale=c("Braun.Blanquet", "Domin", "Hult", "Hill", "fix","log"),
   10 with \code{X} and positive values below 1 with \code{+}. 
 }
 \value{
-  The function is used mainly to print a table, but it returns
+  The functions are used mainly to display a table, but they return
   (invisibly) a list
   with items:
   \item{species}{Ordered species indices}
   \item{sites}{Ordered site indices}
+ 
   These items can be used as arguments \code{sp.ind} and \code{site.ind}
-  to reproduce the table. In addition to the proper table, the function
+  to reproduce the table. In addition to the proper table, \code{vegemite}
   prints the numbers of species and sites and the name of the used cover
   scale at the end.
 }
@@ -106,15 +144,19 @@ coverscale(x, scale=c("Braun.Blanquet", "Domin", "Hult", "Hill", "fix","log"),
 }
 \author{Jari Oksanen}
 
-\seealso{\code{\link{cut}} and \code{\link{approx}} for making your own
-  `cover scales', \code{\link{wascores}} for weighted averages.
-  }
+\seealso{\code{\link{cut}} and \code{\link{approx}} for making your
+  own \sQuote{cover scales} for \code{vegemite}.  Function
+  \code{tabasco} is based on \code{\link{heatmap}} which in turn is
+  based on \code{\link{image}}. Both functions order species with
+  weighted averages using \code{\link{wascores}}.  }
 
-\note{ This function was called \code{vegetab} in older versions of
-  \code{vegan}.  The new name was chosen  because the output is so
-  compact (and to avoid confusion with the \code{vegtab} function in the
-  \pkg{labdsv} package).
-    }
+\note{   
+
+  The name \code{vegemite} was chosen because the output is so
+  compact, and the \code{tabasco} because it is just as compact, but
+  uses heat colours.
+    
+}
 \examples{
 data(varespec)
 ## Print only more common species 
@@ -127,9 +169,31 @@ vegemite(varespec, dca, "Hill", zero="-")
 clus <- hclust(vegdist(varespec))
 cl <- cutree(clus, 3)
 sel <- vegemite(varespec, use=dca, select = cl == 3, scale="Br")
-# Re-create previous
+## Re-create previous
 vegemite(varespec, sp=sel$sp, site=sel$site, scale="Hult")
+## Re-order clusters by ordination
+clus <- as.dendrogram(clus)
+clus <- reorder(clus, scores(dca, choices=1, display="sites"), agglo.FUN = mean)
+vegemite(varespec, clus, scale = "Hult")
+
+## Abundance values have such a wide range that they must be rescaled
+## or all abundances will not be shown in tabasco
+tabasco(decostand(varespec, "log"), dca)
+
+## Classification trees for species
+data(dune, dune.taxon)
+taxontree <- hclust(taxa2dist(dune.taxon))
+plotree <- hclust(vegdist(dune), "average")
+## Automatic reordering of clusters
+tabasco(dune, plotree, sp.ind = taxontree)
+## No reordering of taxonomy
+tabasco(dune, plotree, sp.ind = taxontree, Colv = FALSE)
+## Species cluster: most dissimilarity indices do a bad job when
+## comparing rare and common species, but Raup-Crick makes sense
+sptree <- hclust(vegdist(t(dune), "raup"), "average")
+tabasco(dune, plotree, sptree)
 }
-\keyword{ print }
-\keyword{ manip }
+\keyword{print}
+\keyword{manip}
+\keyword{hplot}
 
diff --git a/man/wcmdscale.Rd b/man/wcmdscale.Rd
index 07fcc3e..ee8c777 100644
--- a/man/wcmdscale.Rd
+++ b/man/wcmdscale.Rd
@@ -49,16 +49,18 @@ wcmdscale(d, k, eig = FALSE, add = FALSE, x.ret = FALSE, w)
 
   With default options, the function returns only a matrix of scores
   scaled by eigenvalues for all real axes. If the function is called
-  with \code{eig = TRUE} or \code{x.ret = TRUE}, the function returns an
-  object of class \code{"wcmdscale"} with \code{print}, \code{plot},
-  \code{scores}, \code{\link{eigenvals}} and \code{\link{stressplot}}
-  methods, and described in section Value.  }
+  with \code{eig = TRUE} or \code{x.ret = TRUE}, the function returns
+  an object of class \code{"wcmdscale"} with \code{print},
+  \code{plot}, \code{scores}, \code{\link{eigenvals}} and
+  \code{\link{stressplot}} methods, and described in section Value.  
+}
 
 \value{ If \code{eig = FALSE} and \code{x.ret = FALSE} (default), a
-  matrix with \code{k} columns whose rows give the coordinates of the
-  points chosen to represent the dissimilarities.  Otherwise, an
-  object of class \code{wcmdscale} containing the components that are
-  mostly similar as in \code{\link{cmdscale}}:
+  matrix with \code{k} columns whose rows give the coordinates of
+  points corresponding to positive eignenvalues.  Otherwise, an object
+  of class \code{wcmdscale} containing the components that are mostly
+  similar as in \code{\link{cmdscale}}:
+  
   \item{points}{a matrix with \code{k} columns whose rows give the
     coordinates of the points chosen to represent the
     dissimilarities.}

-- 
Community Ecology Package for R



More information about the debian-med-commit mailing list