1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
Changes since version 0.4
===
* New features
* `list.ungroup` now supports `level` arguments to `unlist` a nested list recursively. (#102)
* `list.flatten` now accepts `classes` to filter list element recursively by class name.
* `list.expand` implements a list version of `expand.grid` (#107)
* Improvements
* Support loading and parsing from xml to list. (#43)
* `list.search` now uses `is.null` to clean the results.
* Add `list.unzip` to `List` object.
* `list.ungroup` now supports `group.names` to indicate whether to preserve group names.
* Implement better error handling mechanism in `list.all`, `list.takeWhile`, `list.skipWhile`, etc.
* `list.table` will directly call `table` upon input data if `...` is missing.
* Bug fixes
* Fix returned value of `list.unserialize`.
* `list.skip` returns the original data when asked to skip 0 elements.
* `list.skip` takes the first `n` elements when asked to skip a negative number of elements.
* Fix bug in lambda expression handling of `list.all` (#105)
Version 0.4
===
* New features
* Include a dataset `nyweather` scraped from [OpenWeatherMap](https://openweathermap.org/) (#2)
* `list.load` now supports text-based progress bar when `progress = TRUE` which is by default
enabled if over 5 files are to be loaded. (#92)
* New function `list.names` gives a list or vector names by mapping.
* New functions `list.first` and `list.last` find the first or last list element that meets a
given condition.
* New function `list.unzip` to transform a list of elements with similar structure into a
list of decoupled fields.
* Improvements
* Add error handling in several edge cases. (#18)
* `list.group` now supports grouping by multi-key which produces multi-level list. (#69)
* `list.load` now supports loading from multiple filenames given in character vector. (#74)
* `list.load` is now able to guess the file format even if the file type is not specified. (#76)
* `list.maps` now allows the usage of `..1`, `..2`, etc. to refer to unnamed arguments. (#80)
* `list.load` now supports merging and ungrouping as means to aggregating loaded results. (#82)
* `list.stack` now uses `data.table::setDF` to convert `data.table` to `data.frame` if
`data.table = FALSE`, which is done by reference and thus has higher performance.
* Bug fixes
* `list.search` now takes `n` as the number of returned vector rather than that of the
elements in all returned vectors, and is now able to jump out when the result set reaches
given capacity. (#47, #84)
* Fix how `list.table` deals with `NULL` values. (#73)
* Fix how wrapper functions deal with default arguments. (#75)
* Fix the dynamic scoping issues in `list.table`. (#86)
* `list.all` and `list.any` behave the same as `all` and `any` respectively when the input is empty. (#87)
* One-sided formula does not result in error now. (#89)
* `list.flatten` now preserves names as specified. (#90)
* Fix incorrect processing for fallback in `list.findi`. (#91)
* Fix the implementation in `list.group` working with multi-key. (#93)
* Fix incorrect ordering if some entries are multi-valued vectors and others and single-
valued. If `list.order` and `list.sort` encounter such situation, they now report
error rather than silently produced unreliable results. (#94)
* Fix inconsistencies in `list.all`, `list.any`, `list.first` and `list.last`.
* Deprecation
* `equal()` is removed and related packages are now suggested rather than imported. (#70)
* `summary.list()` is deprecated. (#70)
* No longer interprets `x -> f(x)` as a form a lambda expression. Use `x ~ f(x)` instead. (#54)
* `desc(x)` is no longer supported in `list.sort` and `list.order`. Use `-x` or `(x)` instead. (#66)
Version 0.3
===
API Break: `list.search` now evaluates expression recursively in a list and supports lambda expression.
Add `equal()` function for logical and fuzzy filtering and searching which supports exact equality, atomic equality, inclusion, pattern matching, string-distance tolerance.
Add `List()` to provide an environment in which most list functions are defined for light-weight chaining that does not rely on external operators.
Version 0.2.5
===
Add `list.apply` which is a wrapper function of lapply.
Add `list.search` that searches a list recursively.
Add exact search functions: `equal`, `unequal`, `unidentical`, `include`, and `exclude`.
Add fuzzy search functions: `like` and `unlike` based on stringdist package.
Enhance `list.clean` which now supports recursive cleaning.
Version 0.2.4
===
Add `list.common` that returns the common cases of all list member by expression.
Version 0.2.3
===
Improve performance (#26, #27)
Add `list.flatten` that flattens a nested list to one-level.
Version 0.2.2
===
Add `list.stack` that binds list members to a data.frame.
Add `list.zip` that combines multiple lists element-wisely.
Add `list.maps` that performs mapping over multiple lists.
Performance improvements.
Minor maintainence updates.
`list.cases` supports list-like cases
Fixed [#23](https://github.com/renkun-ken/rlist/issues/23)
Fixed [#25](https://github.com/renkun-ken/rlist/issues/25)
`list.select` no longer accepts explicit lambda expressions.
Vignettes updated
Version 0.2.1
===
Add new function `list.table`
Minor maintainence updates.
Fixed [#6](https://github.com/renkun-ken/rlist/issues/6)
Fixed [#11](https://github.com/renkun-ken/rlist/issues/11)
Fixed [#20](https://github.com/renkun-ken/rlist/issues/20)
Fixed [#21](https://github.com/renkun-ken/rlist/issues/21)
Version 0.2
===
Add `list.join`, `list.mapv`, `list.do`, `list.clean`, `list.parse`
Add vignettes
Version 0.1
===
Implement functions
|