# All changes to data.tree are documented here. ## Version 1.1.0 - IMPROVE: Node names may no longer be `NA`. It was not fully supported, and now it is an error. (#152) - FIX: changed lock_object to lock_objects (#149 thx to Olly Beagly) - FIX: help('data.tree') works again - IMPROVE: FromListSimple and as.Node.list now have an additional parameter 'interpretNullAsList'. See #169 for details. - IMPROVE: added parameter `row.names = FALSE`in `print.Node()` to hide row numbers when printing a data.tree. ## Version 1.0.0 - IMPROVE: Replaced dependency on stringr by dependency on stringi, which make data.tree even more light-weight - CHANGE: Node serialization changed. In many cases, you might still be able to load previously saved data.tree objects, but then they do not correspond to the latest version. - CHANGE: New reserved words for Node: attributes and attributesAll - NOTE: Node$fields and Node$fieldsAll will be deprecated in the next version. Use Node$attributes and Node$attributesAll instead - REMOVE: Deprecated Node$FindNode has been removed (use FindeNode(node, ...) instead) - IMPROVE: Node is now fully documented, (thx to roxygen2 for supporting R6) - CHANGE: data.tree now depends on R 3.5 - FIX: adjusted sample data that didn't support correct handling of active bindings - IMPROVE: Adding reserved word check to FromDataFrameNetwork (#147 thx to wkumler) ## Version 0.7.11 - IMPROVE: diagrammeR is now only suggested, so data.tree is much more lightweight if plotting is not needed (#143 thx to Russ Hyde) - FIX: plot now also works with quotations in names (#137 thx to thotal) - IMPROVE: as.list and other conversions to list now contain pruneFun argument (#142) ## Version 0.7.10 - IMPROVE: various spell errors fixed in vignettes ## Version 0.7.9 - FIX: Bug in as.data.frame.Node: NA for certain lists slots (#135) - FIX: Get prints Null as NA by default (#128) ## Version 0.7.8 - FIX: wrong export of S3 ## Version 0.7.7 - IMPROVE: if an attribute of a node has n dimensions, then Get will return an array of dim n+1, with the names of the first dimension being equal to the node names (thanks to Chris Hammil) - FIX: fieldsAll now doesn't simplify (thanks to Vaclav Slimacek) ## Version 0.7.6 - IMPROVE: plot now also works for trees with a single root node (thx to Pierre Neuvial) - IMPROVE: ellipsis parameters are not passed to DiagrammeR for plotting (#109) - FIX: Dependency on DiagrammeR (>= 1.0.0) explicitly stated (#111) - IMPROVE: Allow tibble in FromDataFrameNetwork and FromDataFrameTable (#115) ## Version 0.7.5 - IMPROVE: namesNotUnique parameter in as.Node.phylo (#106) - FIX: fixed incompatibility issue with DiagrammeR (#110) ## Version 0.7.4 - IMPROVE: print now has an explicit arg pruneFun - FIX: partykit tests now pass - FIX: DESCRIPTION now in line with latest changes from CRAN (rmarkdown declared) - FIX: Skipped tests in testMethods included ## Version 0.7.3 - FIX: Various typos in documentation ## Version 0.7.2 Upgrade to R 3.4.x and newest package versions. - FIX: plot: global graph attributes now work (#88) - FIX: typo in vignette data.tree vignette('applications', package = "data.tree") - FIX: warnings in as.dendrogram - FIX: warnings in sample code for Do - FIX: as.data.frame created warnings for values that were of length 0 ## Version 0.7.0 - ADD: ToDiagrammeRGraph to convert to a DiagrammeR graph object - REMOVE: ToGraphViz (replaced with ToDiagrammeRGraph, to support the latest features in the DiagrammeR package). You can still get the dot representation by using DiagrammeR::generate_dot(ToDiagrammeRGraph(node)) - CHANGE: plot.Node 's last parameter is now 'graph', and not 'engine' anymore. - FIX: minor typos fixed ## Version 0.6.2 - ADD: new Distance function to measure distance from one Node to another in the same tree ## Version 0.6.1 - IMPROVE: FromListSimple now accepts subclasses of lists (#79) - IMPROVE: FromDataFrameTable now supports tibbles (#89) - IMPROVE: print.Node and as.data.frame.Node now also work for node fields with length > 1 (#81) - FIX: print.Node and as.data.frame.Node now also work if some Nodes have the same name as some fileds (#82) - REMOVE: node$FindNode, and node$Navigate are now deprecated. Use FindNode(node, ...) and Naviate(node, ...) instead - REMOVE: node$Sort, node$Prune, and node$Revert are now deprecated. Use Sort(node, ...), Prune(node, ...) and Revert(node, ...) instead ## Version 0.5.0 - IMPROVE: Performance improvement for many functions. For example, as.Node roughly by factor 4 for large dataset (#74) - CHANGE: by default, as.data.frame.Node (and derivatives) do not format anymore (use the format parameter if you want to format) - IMPROVE: Allow the possibility to keep only some fields when converting to list using as.list.Node (#76) - FromDataFrameTable (#77) - FIX: now also works if there is only the pathString column - IMPROVE: pathString can now also be a factor (or any other type convertible to character) ## Version 0.4.0 - IMPROVE: as.Node.data.frame and FromDataFrameTable now support paths containing reserved words (#65) - CHANGE: Node$new now checks that names are not reserved names. As a consequence, many conversions to Node now contain a check parameter. - IMPROVE: Climb is now much faster when climbing by name (#71) - IMPROVE: As a result of #71, many other functions are much faster, e.g. FromDataFrameTable (#72) ## Version 0.3.7 - ADD: Traverse can now also take custom function as a traversal argument - ADD: Navigate method - ADD: as.Node.BinaryTree Convert SplittingNode from party package to data.tree (#6) - ADD: as.Node.party Convert party class from partykit package to data.tree (#6) ## Version 0.3.6 - FIX: GetDefaultTooltip now also works for attributes which are functions - FIX: GetAttribute now returns attributes with length 0 (e.g. an empty list) - ADD: Sort, Revert and Prune are now also available in traditional format (e.g. Prune(node, pruneFun)) - FIX: FromListSimple: Empty lists now become empty nodes (#59) - IMPROVE: FromListSimple: Unnamed list elements are now also converted (#61) - IMPROVE: documentation of Aggregate - IMPROVE: Check type when setting Node$parent and Node$children (#63) ## Version 0.3.5 - FIX: minor correction in documentation ## Version 0.3.4 - FIX: minor correction in documentation ## Version 0.3.3 - CHANGE: Renamed Find method to FindNode, in order to avoid masking from base - FIX: upgrade to latest version of treemap package - FIX: a few typos in documentation ## Version 0.3.2 - ADD: FromListExplicit now interprets character vectors as a list of nodes (#58) ## Version 0.3.1 - IMPROVE: as.list.Node - now generates auto name if unique name is not available (#54) - now has warn arg, warning if source data contains reserved names - now also imports fiels with names equal to reserved names (e.g. count), they will be renamed (to e.g. count2) - CHANGE: node$leaves now returns a list even when called on a leaf itself - ADD: Find method to find a single Node in a (sub-)tree (#52) ## Version 0.3.0 Pine Tree - REMOVE: Removed the cacheAttribute parameter from Aggregate and Cumulate (they were confusing, even to me. Use Do instead to manually store aggregate values in the tree) - ADD: plot function (see ?plot.Node) - ADD: ToDataFrameTypeCol to export e.g. the path to columns by level in columns: ToDataFrameTypeCol(acme) - ADD: Node$AddSibling - ADD: Node$RemoveAttribute now contains a mandatory parameter so that it can be used if the node does not have the attribute to be removed. - ADD: Get works on methods without args - IMPROVE: FormatFixedDecimal and FormatPercent work for NULL values - IMPROVE: Documentation - FIX: Aggregate will not return attribute from callee anymore, but *always* aggregate children attributes - FIX: Removed ... parameter from ToListExplicit and ToListSimple - FIX: Clone was adding empty children list, which caused a series of problems (#44) - FIX: Cloning a subtree does not keep reference to un-cloned parent anymore (#49) - FIX: print with limit parameter ignored formatter (#43) - FIX: cannot rename to int, e.g. acme$Do(function(x) x$name <- x$position) (#53) ## Version 0.2.4 - FIX: applications vignette, changed from https://htmlwidgets.org to https://www.htmlwidgets.org, as requested by CRAN ## Version 0.2.3 - FIX #33: applications vignette doesn't build because of DiagrammeR update - FIX #32: Cannot subclass Node - FIX #30: strange errors when using data.tree multiple times ## Version 0.2.2 - FIX: Get can now fetch vectors and matrices too - ADD: Node$siblings ## Version 0.2.0-rc.1 Elder - ADD: ClimbByAttribute - FIX: Aggregate and Cumulate now work always on attributes having a formatter - ADD: as.igraph now has a 'directed' parameter - ADD: print now has a pruneMethod, allowing different methods to avoid that a huge tree is printed to the console - REMOVE: FromDataFrameTaxonomy and ToDataFrameTaxonomy (replaced by FromDataFrameNetwork and ToDataFrameNetwork, but with some differences) - ADD: FromDataFrameNetwork and ToDataFrameNetwork - IMPROVE: make Traversal "level" much faster - ADD: Node$RemoveChild - ADD: Node$RemoveAttribute - ADD: as.igraph.Node now supports different directions (climb and descend) ## Version 0.1.9 Pine II - Set correct version number in DESCRIPTION file ## Version 0.1.8 Pine - Node - CHANGE: Node$depth is now called Node$height, as the old naming was confusing for many, because in CS, the Node$level is sometimes - Utils - CHANGE: Renamed CreateDummyTree to CreateRegularTree - CHANGE: Height renamed to DefaultPlotHeight, so as to avoid confusion with Node$height - ADD: CreateRandomTree to test trees - ADD: trees can now be climbed directly, e.g. acme$IT$`Go agile` - ADD: print.Node with limit parameter is now much faster - ADD: Clone is now much faster ## Version 0.1.7 Chestnut - General - ADD: demo portfolio - ADD: demo decisiontree - ADD: demo population / treemap - Node - CHANGE: Node$level is now 1-based (used to be: 0-based), i.e. if Node$isRoot then Node$level = 1 - CHANGE: Node$Find is now called Node$Climb to avoid confusion with base::Find called depth - ADD: print.Node contains a limit parameter, allowing to limit the max number of Nodes to be printed - ADD: Clone (returning a deep copy) - ADD: Prune (pruning the tree) - ADD: SetFromat (support for setting formatter functions on a Node) - ADD: Traverse, standalone traverse method that can be used for piping and whenever you need to apply multiple Get/Set/Do on the same traversal - ADD: Node$isBinary active - ADD: standalone versions of isLeaf, isNotLeaf, isRoot, isNotRoot for concise filtering - ADD: AreNamesUnique to test if names of the node's are unique throughout the tree (and not only among siblings) - FIX: node$position now returns 1 for root - ADD: Aggregate function now supports functions - ADD: node$averageBranchingFactor - CHANGE: Aggregate function does not cache anymore by default. See cacheAttribute for details. - Node$Get: - CHANGE: Renamed filterFun parameter to pruneFun - ADD: new parameter filterFun, as opposed to pruneFun - CHANGE: removed the assign parameter (use Do instead) - ADD: new traversal modes "in-order", "level" - ADD: parameter inheritFromAncestors - Node$Set: - ADD: filterFun and pruneFun - ADD: support for traversal order - Node$Do: - ADD: new function Do, which applies a function to Nodes - Conversions - ADD: conversion to and from list of lists (and thus to and from yaml, json, etc.) - ADD: conversion from data.frame - ADD: conversion to and from dendrogram - ADD: conversion to and from phylo from the ape package - ADD: conversion to Newick notation - ADD: conversion ToDataFrameTable (returning leafs only) - ADD: conversion ToDataFrameTree - ADD: conversion ToDataFrameTaxonomy - ADD: conversion to igraph - Utils - CHANGE: Renamed PrintFixedDecimal to FormatFixedDecimal to achieve better consistency - ADD: CreateDummyTree to test large trees - ADD: CreateRandomTree to test trees