Changes in version 2.9.6 (2025-11-28) o Fixed documentation issues (links to other packages) Changes in version 2.9.0 (2015-06-11) o some updates on the NAMESPACE to comply to new CRAN policies. o bugfix: MIP method for error localisation ignored time constraint o bugfix: edge case in c.editmatrix for empty edit matrices. o bugfix: editfile w/type='num' would crash on empty file input. o bugfix in as.igraph methods for editmatrix, editarray, editset o bugfix: edge case in substValue methods o bugfix: contains.editmatrix crashed on editmatrix containing 0 variables o bugfix: user-defined M was ignored in MIP version of error localizer. o mixed typed edits now have naming convention used in paper o added SOS1 type edits for categorical constraint. Should improve mip performance. o editset subsetting now support negative row index o printing an empty cateditmatrix doesn't fail anymore o fix a bug in parsing a mix edit with no numeric constraint in the premisse (thanks to Alois Haslinger) Changes in version 2.7.2 (2013-07-03) o Suggest-dependency on iterators removed o now depends on lpSolveAPI (instead of suggests) o small documentation changes to comply to new CRAN policy o bugfix in summary.violatedEdits: would crash on NA's o Concatenating editmatrix, editset and editset now keep their rownames o Simplified mip implementation o fixed a bug, empty levels are now allowed in editarray. Thanks to kforner Changes in version 2.7-1 o bugfix: summary.violatedEdits crashed when no edits were violated. o Branch and Bound method now bounds (instead of crashes) when memory allocation for variable elimination fails o The 'status' of errorLocation object gains column indicating whether the memory allocation failure was hit as bound condition o localizeErrors gains 'retrieve' argument, controling which solution to return: the best or the first encountered. o changed method parameter of localizeErrors into "bb" or "mip" ("localizer" is deprecated). Changes in version 2.7-0 o bugfix: numeric edits now include constants assigned in editfile (thanks to Jeroen Pannekoek) o BREAKING CHANGE: first argument in as.igraph is now called 'x' to comply with new generic from igraph package o bugfix in contains.editset: in some cases not all edits were found o contains now gives more meaningfull error msg when nonexistent variable names are passed o bugfix: brackets inside mixed edits were not parsed: if ((x>0 && y>0)) z < 0 o changed dependency on igraph0 into igraph o getVars method for editarray now returns NULL when type argument is not 'cat' (the default). Thanks to Elmar Wein. o print methods for editmatrix and editarray gain textOnly argument (default is FALSE for backward compatibility) o bugfix in parseMix: mixed edits containing an numeric equality constraint now generate an error (which is correct, since equality constraints in mixed edits are not supported.) o bugfix in summary.violatedEdits, the "edit" column showing the violated edit was incorrect (the method itself was correct though), thanks to Francesca Pogelli for reporting that error o bugfix in weight calculation: weight of variables exceeding range edits was counted twice o errorLocalizer.editarray gains 'tol' argument for feasibility checks o records with large maximum absolute value now pre-scaled when localizing errors with MIP o bugfix in as.character.editarray: failure when edit excludes subset of datamodel o bugfix in substValue.editset (processing of dummy variables failed in certain cases) o exported nedits Changes in version 2.5-0 (2012-06-05) o discussion papers are no longer vignettes, but included in inst/doc. o complete documentation overhaul o overloaded 'c' for editset o localizeErrors uses vectorized method for single-variable, single-edit blocks ('singleton' method) o error localization based on lpSolveApi uses block-wise processing for enhanced numerical stability o function editType exported: lists edit categorie for 'editset' ('num', 'cat', 'mix') o duplicated dummyvariables in an editset are removed (making 'disjunct' much more efficient) o localizeErrors for conditional restrictions (editset) o errorLocalizer.-functions now accept a named list as records (as well as named vector) o Option 'useBlocks' in function 'localizeErrors' is now ignored (always TRUE) and will be removed o errorLocalizer (b&b) for conditional restrictions (editlist/editset) o isObviouslyInfeasible for editlist/editenv/editset o bugfix in localizeErrors: logical columns caused crashes when both TRUE and FALSE present o bugfix in violatedEdits.editarray: crashed when 0 columns were present (Thanks to Elmar Wein) o bugfix en parser: editset() crashed at numberless mixed expressions as 'if (A=="a") x > y o bugfix in violatedEdits.editset: wrong handling of numerical edits. o Better printing of cateditmatrix. o BREAKING CHANGE: listViolatededits and checkRows are deprecated. Use violatedEdits in stead. o BREAKING CHANGE: violatedEdits.data.frame, toDataFrame and iter.backtracker are now editrules internal and no longer supported o BREAKING CHANGE: argument fancynames of eliminate.editmatrix is removed Changes in version 2.2-0 (2012-02-23) o Added function 'disjunct' decoupling conditional numeric/categorical edit sets o removed deprecated functions 'eliminateFM' and 'editrules' o Fixed two corner case bugs in localizeErrors with method="mip" o bugfix in duplicated.editmatrix o fix in documentation of plot.editset o bugfix in localizeErrors.editmatrix causing error when a value doesn't conform to datamodel (Thanks to Elmar Wein) Changes in version 2.1-2 (2012-02-08) o removed some unnecessary files from inst/doc o added function generateEdits: derive all nonredundant essentialy new categorical edits. o editfile reads categorical, numerical and mixed edits. o violatedEdits works for objects of class editset. o BREAKING CHANGE: function 'editrules' is obsolete. Use as.data.frame or as.editmatrix. o added as.character, print method for editset. o as.data.frame.editmatrix and .editarray now only return 'description' column if input has description attribute. o edits in editmatrix and editarray are now printed with prefix 'num' and 'cat', in stead of 'e', datamodel gets prefix 'dat' o added nedits function counting the number of edits in an editmatrix -array or -set o added blockIndex function o is.editset, getVars, blocks, reduce and row indexing ([) for editset objects o violatedEdits, summary, echelon, as.data.frame, plot, as.igraph, adjacency for editset objects o simpler internal representation for editset o substValue.editmatrix gains argument removeredundant (default:TRUE) indicating wether or not to remove redundant rows. o added substValue.editset Changes in version 2.0-3 (2012-01-12) o new generic function checkDatamodel: checks data agains datamodel implied by editarray o bugfix in localizeErrors: crashed when reduce() (used in blocks) removes variables in editarray (thanks to Bikram Maharjan) o internally, eliminate.editarray performs extra edit redundancy checks o fixed cornercase in `[.editarray`. Now correctly handles empty character ("") as category name. o added numcat function, returns number of categories for each variable in an editarray Changes in version 2.0-2 o NOTE: 2.0-2 is not a CRAN release o includes *BETA* version of mixed edit parsing o includes *BETA* version of error localiztion as MIP problem (option method='mip' in localizeErrors) o eliminate.editarray gained speed in certain cases o fixed cornercase in editarray: empty category value gave new variable o New function editfile reads edits and domain definitions from text file o editarray gains env (environment) argument o editarray and editmatrix now handle zero-length arguments Changes in version 2.0-1 (2011-12-08) o bugfix in isSubset.editarray o buxfix in localizeErrors: maxduration was previously ignored (thanks to Francesca Pogelli and Teresa Buglielli of ISTAT) o buxfix in parseEdits: non constant parsing was not detected. It is now also possible to use x*100 (thanks to Francesca Pogelli and Teresa Buglielli of ISTAT) o bugfix in errorLocalizer: no solution was returned if maxdurationExceeded==TRUE (even if at least 1 solution was found) o bugfix in summary.errorLocation: could not handle NA in status fields Changes in version 2.0-0 (2011-11-30) o Final version of vignette. o Function 'contains' now S3 generic and overloaded for editmatrix object. o BREAKING CHANGE. as.data.frame.editmatrix is now symmetrical with as.data.frame.editarray. Use toDataFrame for old behaviour. o str overloaded for objects of class editarray (gives output similar to str.editmatrix) Changes in version 1.9-0 (2011-11-17) o Parser for categorical edits accepts edits in the form "if ( ) FALSE" o Parser for categorical edits accepts '&' as well as '&&' o Corner case in reduce.editmatrix: now handles empty inputmatrices. o substValue.editarray now works for boolean values o Parser for all edits accepts expression vector Changes in version 1.8-1 (2011-10-27) o fixed a corner case bug for deducorrect Changes in version 1.8-0 (2011-10-23) o violatedEdits.editmatrix more robust against NA's in records o plot method for arguments of class errorLocation, violatedEdits o errorLocalizer now throws error when edit set contains variables not encountered in record. o solved edge case in error localizer. $adapt would be NA if all variables were NA (now TRUE) o bugfix in violatedEdits.editmatrix (inequalities were checked incorrectly) o bugfix in edge case of 'contains' (nonuniform output if editarray has only one rule) o summary method for arguments of class editmatrix, editarray, errorLocation o localizeErrors now accepts an array of weights so weights can be set per record o localizeErrors gains arguments 'useBlocks' (default: TRUE) and 'verbose' (default: FALSE). o variable and edge nodes can be colored in plot.editmatrix or plot.editarray. Changes in version 1.7-0 (2011-10-12) o several improvements in parsing categorical edit rules in the presence of & and | operators. o solved a bug in violatedEdits causing inequality violations to go unnoticed (since version 1.5.0, thanks to Elmar Wein) o substValue.editarray now works for multiple variables o Introduced the special FALSE edit (indicating that the set of valid records is empty) o editarray now emits error when the | or || operator is used in conjuncion with an 'if' statement. o Solved inconsistent parsing character->editmatrix->character in case a (derived) edit reduces the datamodel o Solved bug in blocks (constants were ignored for obects of class editmatrix) o Output of errorLocalizer.editarray is now equivalent to errorLocalizer.editmatrix o isFeasible tested for objects of class editarray (works) o blocks now also works for objects of class editarray o overloaded indexing for objects of class editarray o added function 'reduce' which deletes unnecessary variables and rows from editarray or edimatrix o BREAKING CHANGE argument 'remove' is replaced with reduce for clarity o NOTE: Default value for argument 'warn' in isFeasible is now set to TRUE o NOTE: Default value for argument 'remove' in substValue.editarray is now set to FALSE Changes in version 1.6-0 (2011-10-06) o Added functionality for plotting edit graphs directly from edit sets o Added functionality for deriving igraph objects directly from edit sets o Added functionality for deriving adjacency matrices for edit sets o Package now suggests igraph package for graphical analysis of edit sets o Fixed bug causing wrong error localization or crash when weights are used. (Thanks to Kenneth Chin-A-Fat) Changes in version 1.5-2 (2011-09-26) o Fixed column matching bug in violatedEdits.editarray Changes in version 1.5-1 (2011-09-25) o Fixed a bug in violatedEdits.editmatrix which caused deducorrect correctTypos to fail (Thanks to Brian Ripley for contacting us) Changes in version 1.5-0 (2011-09-24) o BETA FUNCTIONALITY: Error localization, variable elimination etc. for categorical variables. o new function localizeErrors(E,dat) processes whole dataset with $searchBest() (needs more testing). o errorLocalizer throws error at invalid weights (thanks to Kenneth Chin-A-Fat). o Argument maxweight was ignored by errorLocalizer.editmatrix, now works. o violatedEdits has better (more clear) output. Changes in version 1.0-2 (2011-08-10) o solved bug in as.character.editmatrix (thanks to Sander Scholtus) Changes in version 1.0-1 (2011-08-09) o solved edge case in $searchBest() method of errorLocalizer (thanks to Sander Scholtus) Changes in version 1.0-0 (2011-08-01) o Formal upgrade only. Changes in version 0.9-1 o errorLocalizer now robust when variables occur in record and not in editmatrix. Changes in version 0.9-0 (2011-07-23) o Performance gain by improved bounding condition in backtracking object returned by errorLocalizer o functions getH and geth for objects of class editmatrix added. o removed bug from $searchBest(), a sole solution wasn't returned. o backtracker$searchNext() and $searchAll() gain maxduration argument o BREAKING CHANGE: function findBlocks replaced by blocks. finblocks now emits warning, will become error in next release o Solved bug causing eliminateFM to return spurious but harmless edits in edge case, thanks to Sander Scholtus o Backtracker gains maxdepth and maxduration parameter o errorLocalizer gains maxduration, maxadapt and maxweight parameter o removed deprecated functions cp.editmatrix, replaceValue Changes in version 0.8-0 o removed deprecated functions getC. getMatrix from source o deprecated functions cp.editmatrix, replaceValue now emit error o added index to vignette o solved corner case error in error localizer o BREAKING CHANGE: renamed choicepoint into backtracker o cp object generated by errorLocalizer does not return final editmatrix anymore (useless). o solved a bug causing isObviouslyInfeasible to miss certain cases o substValue can now replace multiple values at once. o `[.editmatrix` now retains derivation history (previously lost in substValue operations) o removed a bug from echelon.editmatrix, it failed when no operation was possible. Changes in version 0.7-1 (2011-06-29) o made as.errormatrix a bit more robust and solved a cornercase o fixed bug in editmatrix causing crashes in cornercase when "description" column of input is empty. Changes in version 0.7 (2011-06-25) o errorLocalizer gains searchBest() function, returns random solution in case of degeneracy o added as.character coercions in editmatrix to solve crash o BREAKING CHANGE: replaceValues renamed to substValues. Currently warns, will emit error in next release. o BREAKING CHANGE: cp.editmatrix renamed to errorLocalizer and now S3 generic. Currently warns, will emit error in next release. o getC and getMatrix are deprecated and now emit errors. o Vignette ready for review o solved bug in documentation of cp.editmatrix o solved bug in str.editmatrix o isObviouslyRedundant now finds duplicate rows within tolerance. o overloaded built-in function "duplicated" for editmatrix. o Added full feasibility check for editmatrix: isFeasible o removed bug from findBlocks and exported. Changes in version 0.6 (2011-05-11) o Edit rule coercions: as.expression as.character as.editmatrix as.data.frame o Transform equality restrictions to reduced row echelon form o Obvious (in)feasibility and redundancy checks for linear edit rules o The following functions are deprecated, and give a warning: getC, getMatrix (warnings will become errors in the next release). o Added cp.editmatrix which solves error localization under generalized Fellegi-Holt paradigm o Added choicepoint algorithm for generic binary search o Option normalize=TRUE for editmatrix is now the default o Overloaded str function for editmatrix object o Added fully vectorized Fourier-Motzkin elimination function with redundancy removal o Added a normalize function o Exported and documented replaceValue o rewrote internal representation of editmatrix, it is now an augemented matrix (A|b) o BREAKING CHANGE: clean up of notation/syntax/naming convention: constants are named b, coefficients are named A Changes in version 0.5 (2011-04-01) o fixed breakage at single record input of violatedEdits o added findBlocks, break up a matrix in its constituing blocks Changes in version 0.4-1 (2011-03-12) o long edit rules (> 60 characters) failed, the upper limit for editrules is right now 500 o added row subscript operator for object of class editmatrix o added getMatrix, same functionality as as.matrix, but more symetric with respect to getOps, getC and getVars Changes in version 0.4 (2011-02-26) o improved expression parsing o improved handling of wrong input for method editmatrix o improved handling of extra columns in editrules o added as.data.frame.editmatrix o negative coefficients and constants were not parsed correctly o added vignette o removed deprecated editsinfo parameter from editmatrix o added getOps and getCONSTANT functions for retrieving operators and constants from an editmatrix o checkRows is now S3 generic and overloaded for character, data.frame and editmatrix o added simplification of constraints (coefficients will be summed) o renamed errormatrix into violatedEdits Changes in version 0.2 (2011-02-08) o added CONSTANT parsing and generation o simplified editmatrix by removing one parameter (accepting both types of input) o renamed editsinfo to more understandable editrules o removed documentation of internal "edits" function Changes in version 0.1-1 (2011-01-31) o added an as.matrix function o improved editmatrix example