BUG FIX project_to_curve(): Return error message when x or s contain insufficient rows.
BUG FIX unit tests: Switch from svg() to pdf() as support for svg() might be optional.
project_to_curve(): Fix pass-by-reference bug, issue #33. Thanks to @szcf-weiya for detecting and fixing this bug!BUG FIX: Fix warning in stats::approx() due to changes made in R 3.6.
DEFUNCT principal.curve() and get.lam().
BUG FIX: Removed extra dependencies in princurve by removing vignettes; fixes #28.
DEPRECATION principal.curve() and get.lam().
DOCUMENTATION: Use the magick package to generate animated GIFs in the vignette, instead of the animation package, because animation uses ffmpeg which is not installed on all CRAN systems.
DEPRECATION: Added deprecation which will be triggered starting from 2018-08-01 upon calling principal.curve() or get.lam().
DOCUMENTATION: Added vignettes on the algorithm behind princurve and on benchmarking results between princurve 1.1 and 2.1.
BUG FIX principal_curve(): Don’t apply rownames to curve as approx_points could be set to a different value other than nrow(x).
TESTING: Skip comparison unit test between princurve 1.1 and 2.1 on CRAN.
MINOR CHANGE project_to_curve(): Attempt to fix rchk warnings by not using x(i, j) = v notation but instead x[j * x.nrow() + i] = v.
DOCUMENTATION: Fix in README documentation.
BUG FIX principal_curve(): avoid division by zero when the initial principal curve has already converged.
BUG FIX project_to_curve(): set dimension names of outputted s correctly.
DOCUMENTATION: Added cran-comments.md and revdep to repository.
MINOR CHANGE: Removed adjust_range(); use grDevices::extendrange() instead.
TESTING start_circle(): Added unit tests.
BUG FIX start_circle(): Make sure circle is centered and scaled correctly.
MINOR CHANGE: Move smoother functions from inside principal_curve() to a list smoother_functions.
TESTING smoother_functions: Added tests to ensure each of the smoother functions work correctly.
SPEED UP project_to_curve(): Significantly speed up this function by not allocation objects that don’t need allocation, and pre-allocating objects that do.
SPEED UP principal_curve(): Added approx_points parameter. This allows approximation of the curve between smoothing and projection, to ensure principal_curve() scales well to higher numbers of samples.
BUG FIX: Fixed issues with legacy principal.curve() and get.lam() (#8).
TESTING: Perform direct comparison between the current princurve and princurve 1.1-12 to check whether principal.curve() and get.lam() produce output with exactly the same format and almost exactly the same values.
SIGNIFICANT CHANGE: Remove the ord parameter from project_to_curve(), in order to reduce the amount of Rcpp code a little bit.
DOCUMENTATION: Improved citations (#10).
DOCUMENTATION: Improved news (#11).
SPEED UP project_to_curve(): Do not compute lambda accurately as it is only used to order the points in x.
MINOR CHANGE: Added ... argument to whiskers().
DOCUMENTATION: Minor fix in output documentation of principal_curve().
DOCUMENTATION: Added more information to the README.
MINOR CHANGE: Support both news() and markdown news on GitHub.
SIGNIFICANT CHANGES: Reimplemented project_to_curve() completely in Rcpp, thereby completely removing all Fortran code from princurve.
TESTING: test both on linux and osx.
TESTING: Added tests to ensure project_to_curve() works similar to legacy get.lam().
MAINTAINER: Changed the maintainer from Andreas Weingessel to Robrecht Cannoodt.
SIGNIFICANT CHANGES: Added functions principal_curve() and project_to_curve() with a slightly different interface than principal.curve() and get.lam().
DEPRECATION: Prepare get.lam() and principal.curve() for deprecation planned on 2018-07-01. Will contact maintainers of reverse depending packages.
BUG FIX: Allow start_circle() to work when the number of dimensions is larger than 2.
DOCUMENTATION: Rewrite the README in markdown.
DOCUMENTATION: Use roxygen2 for the documentation.
MINOR CHANGES: Clean up code to ensure consistent code formatting.
TESTING: Added tests for principal_curve() and project_to_curve().
TESTING: Enabled continuous integration using travis-ci.org and ci.appveyor.com.
MINOR CHANGES: Update for R 2.0.
DEPRECATION: Removed whiskers()
BENCHMARKING: For larger data sets, most of the time is spent in get.lam().
BUG FIX: smooth.spline(x,y) will only use and return values for “unique” {x}:s. This means that the fitted {y}:s maybe be fewer than the input vector. In order to control for this, we use predict().
NEW FEATURE: Now smoother can also be a function taking arguments lambda, xj and ... and return y of the same length as lambda and xj.
NEW FEATURE principal.curve(): Arguments start and stretch can be NULL, which behaves the same as if they are “missing” [which is hard to emulate with for instance do.call()].
NEW FEATURE: Added converged and nbrOfIterations to return structure.
SPEED UP/MEMORY OPTIMIZATION: Now the nxp matrix ‘s’ is allocated only once. Before it was built up using cbind() once per iteration.
SPEED UP: Now the smoother function is identified/created before starting the algorithm, and not once per dimension and iteration.
MEMORY OPTIMISATION principal.curve(): Now the result matrix allocated as doubles, not logicals (as NA is), in order to prevent a coersion.
BUG FIX: An error was thrown if smoother was a function.
MINOR CHANGES: Cleaned up source code (removed comments).
MINOR CHANGE: Depend on R >= 1.9.0
MINOR CHANGE: Changed license to GPL version 2 or newer, as granted by Trevor Hastie.
MINOR CHANGE: Don’t require defunct modreg.
PACKAGE to Fortran calls.T to TRUE.MINOR CHANGE plot.principal.curve(): Rename argument object to x.
MINOR CHANGE lines.principal.curve(): Rename argument object to x.
MINOR CHANGE points.principal.curve(): Rename argument object to x.
MINOR CHANGE: Rename internal functionstart.circle() to startCircle().
DESCRIPTION: Added Title and Maintainer field.
MINOR CHANGES: Changed F to FALSE.
DOCUMENTATION: Added keywords to get.lam().
DOCUMENTATION: Expanded documentation of principal.curve(): added default values to usage, description, keywords and aliases.
MINOR CHANGES: Changed precision in getlam.f from v(2,10) to v(2,p).