Changes in version 1.10 (2026-03-31) - Remove gge.formula(). - Add option biplot( AEC=TRUE) to draw Average Environment Coordinate biplot. Changes in version 1.9 (2024-10-28) - Documentation pages now created via Github Actions. - Changed vignette chunk option eval=0 to eval=FALSE to maybe fix error when revdep-checking agridat. - Fixed vignette example showing the difference between genotype-focused and environment-focused biplots. Changes in version 1.8 (2023-08-21) - Switch from GPL3 to MIT license. - Fix docType issue as requested by CRAN. Changes in version 1.7 (2021-10-31) - Remove LazyData from DESCRIPTION. Changes in version 1.6 (2020-12-16) Brian Ripley wrote: "The future of OpenGL is uncertain (except on macOS, where it has no future). So it seems reasonable to require rgl only when essential to the package. These packages have it in Depends/Imports but seem not to actually call it in their checks (established using a fake install). It is possible that the sole purpose of the package might be to do interactive visualizations which are not checked, but that seems not to be the case here. We noticed calls to rgl functions in \dontrun{}, but they would better be conditioned by if(interactive()) (see 'Writing R Extensions'). Please move rgl to Suggests and use conditionally (see ยง1.1.3.1 of 'Writing R Extensions') at the next package update."" - Moved rgl to Suggests. Cannot use require(rgl) because that crashes R for some users, so use if("rgl" %in% installed.packages() ) to check for installation and then call functions rgl::open3d() Changes in version 1.5 (2020-07-21) - Please use gge(data,formula) instead of gge(formula,data). - New argument ggb=TRUE to request construction of GGB biplot. Changes in version 1.4 (2018-05-15) - Use cex.gen=0 to omit genotype names. - On some Windows machines, library(rgl) crashes R, perhaps because of a dll conflict with Windows. Removed @import rgl so that rgl is not loaded by default, and now biplot3d uses calls like rgl::text3d. Changes in version 1.3 (2017-12-14) - The nipals() function using C++ code has been removed. - The rnipals() function has been removed. - The gge package now imports the nipals package, which is new. Changes in version 1.2 (2017-05-25) - New function nipals() for finding principal components using C++. Code from pcaMethods package. - New function rnipals() for finding principal components in R. - New function biplot3d() to draw 3d biplots using rgl package. - Modifed main, subtitle, xlab, ylab arguments to allow removal. - Changed title argument to main for consistency with other packages. - Now using testthat and covr packages. - Added package logo on GitHub. Changes in version 1.1 (2016-10-08) - Added zoom.gen and zoom.env arguments to biplot() for M.Zoric. - Moved tests to tests/gge_tests.R Changes in version 1.0 (2015-12-14) - Package gge is split off from agridat package. - Added origin, hull arguments to biplot(). Changes in version 0.1 - Added gge() to agridat package. Changes in version 0.0 - Created function gge() to fit and plot GGE biplots. A history of NIPALS functions in gge 1. (2007) Created nipals() based on pcaMethods::nipalsPca(). Modified the function for faster execution and submitted a patch back to pcaMethods. 2. (2010) Henning Redestig created a C++ version of NIPALS for the pcaMethods package. 3. (2017) The gge::nipals() R function is re-named rnipals(), and a new nipals() function is created, based on the C++ code in pcaMethods. Released gge version 1.2. 4. (2017) Discovered that mixOmics::nipals() is a pure R function that is faster than the C++ version, so gge::nipals() was re-written into a pure R function. The C++ version was removed from the gge package. 5. (2017) The gge::nipals function is moved to a new package, nipals::nipals. The function is optimized for performance, improved to better handle missing values and to orthogonalize the principal components.