Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
README.md | 2022-02-02 | 9.2 kB | |
tidyr 1.2.0 source code.tar.gz | 2022-02-02 | 2.2 MB | |
tidyr 1.2.0 source code.zip | 2022-02-02 | 2.3 MB | |
Totals: 3 Items | 4.5 MB | 0 |
Pivoting
-
pivot_wider()
gains newnames_expand
andid_expand
arguments for turning implicit missing factor levels and variable combinations into explicit ones. This is similar to thedrop
argument fromspread()
(#770). -
pivot_wider()
gains a newnames_vary
argument for controlling the ordering when combiningnames_from
values withvalues_from
column names (#839). -
pivot_wider()
gains a newunused_fn
argument for controlling how to summarize unused columns that aren't involved in the pivoting process (#990, thanks to @mgirlich for an initial implementation). -
pivot_longer()
'snames_transform
andvalues_transform
arguments now accept a single function which will be applied to all of the columns (#1284, thanks to @smingerson for an initial implementation). -
pivot_longer()
'snames_ptypes
andvalues_ptypes
arguments now accept a single empty ptype which will be applied to all of the columns (#1284).
Nesting
-
unnest()
andunchop()
'sptype
argument now accepts a single empty ptype which will be applied to allcols
(#1284). -
unpack()
now silently skips over any non-data frame columns specified bycols
. This matches the existing behavior ofunchop()
andunnest()
(#1153).
Rectangling
-
unnest_wider()
andunnest_longer()
can now unnest multiple columns at once (#740). -
unnest_longer()
'sindices_to
andvalues_to
arguments now accept a glue specification, which is useful when unnesting multiple columns. -
For
hoist()
,unnest_longer()
, andunnest_wider()
, if aptype
is supplied, but that column can't be simplified, the result will be a list-of column where each element has typeptype
(#998). -
unnest_wider()
gains a newstrict
argument which controls whether or not strict vctrs typing rules should be applied. It defaults toFALSE
for backwards compatibility, and because it is often more useful to be lax when unnesting JSON, which doesn't always map one-to-one with R's types (#1125). -
hoist()
,unnest_longer()
, andunnest_wider()
'ssimplify
argument now accepts a named list ofTRUE
orFALSE
to control simplification on a per column basis (#995). -
hoist()
,unnest_longer()
, andunnest_wider()
'stransform
argument now accepts a single function which will be applied to all components (#1284). -
hoist()
,unnest_longer()
, andunnest_wider()
'sptype
argument now accepts a single empty ptype which will be applied to all components (#1284).
Grids
-
complete()
gains a newexplicit
argument for limitingfill
to only implicit missing values. This is useful if you don't want to fill in pre-existing missing values (#1270). -
complete()
gains a grouped data frame method. This generates a more correct completed data frame when groups are involved (#396, [#966]). -
complete()
andexpand()
no longer allow you to complete or expand on a grouping column. This was never well-defined since completion/expansion on a grouped data frame happens "within" each group and otherwise has the potential to produce erroneous results (#1299).
Missing values
-
drop_na()
,replace_na()
, andfill()
have been updated to utilize vctrs. This means that you can use these functions on a wider variety of column types, including lubridate's Period types (#1094), data frame columns, and the rcrd type from vctrs. -
replace_na()
no longer allows the type ofdata
to change when the replacement is applied.replace
will now always be cast to the type ofdata
before the replacement is made. For example, this means that using a replacement value of1.5
on an integer column is no longer allowed. Similarly, replacing missing values in a list-column must now be done withlist("foo")
rather than just"foo"
. -
replace_na()
no longer replaces empty atomic elements in list-columns (likeinteger(0)
). The only value that is replaced in a list-column isNULL
(#1168). -
drop_na()
no longer drops empty atomic elements from list-columns (likeinteger(0)
). The only value that is dropped in a list-column isNULL
(#1228).
Bug fixes and minor improvements
General
-
@mgirlich is now a tidyr author in recognition of his significant and sustained contributions.
-
All lazyeval variants of tidyr verbs have been soft-deprecated. Expect them to move to the defunct stage in the next minor release of tidyr (#1294).
-
any_of()
andall_of()
from tidyselect are now re-exported (#1217). -
dplyr >= 1.0.0 is now required.
Pivoting
-
pivot_wider()
now gives better advice about how to identify duplicates when values are not uniquely identified (#1113). -
pivot_wider()
now throws a more informative error whenvalues_fn
doesn't result in a single summary value (#1238). -
pivot_wider()
andpivot_longer()
now generate more informative errors related to name repair (#987). -
pivot_wider()
now works correctly whenvalues_fill
is a data frame. -
pivot_wider()
no longer accidentally retainsvalues_from
when pivoting a zero row data frame (#1249). -
pivot_wider()
now correctly handles the case where an id column name collides with a value fromnames_from
(#1107). -
pivot_wider()
andpivot_longer()
now both check that the spec columns.name
and.value
are character vectors. Additionally, the.name
column must be unique (#1107). -
pivot_wider()
'snames_from
andvalues_from
arguments are now required if their default values ofname
andvalue
don't correspond to columns indata
. Additionally, they must identify at least 1 column indata
(#1240). -
pivot_wider()
'svalues_fn
argument now correctly allows anonymous functions (#1114). -
pivot_wider_spec()
now works correctly with a 0-row data frame and aspec
that doesn't identify any rows (#1250, [#1252]). -
pivot_longer()
'snames_ptypes
argument is now applied afternames_transform
for consistency with the rectangling functions (i.e.hoist()
) (#1233). -
check_pivot_spec()
is a new developer facing function for validating a pivotspec
argument. This is only useful if you are extendingpivot_longer()
orpivot_wider()
with new S3 methods (#1087).
Nesting
-
The
nest()
generic now avoids computing on.data
, making it more compatible with lazy tibbles (#1134). -
The
.names_sep
argument of the data.frame method fornest()
is now actually used (#1174). -
unnest()
'sptype
argument now works as expected (#1158). -
unpack()
no longer drops empty columns specified throughcols
(#1191). -
unpack()
now works correctly with data frame columns containing 1 row but 0 columns (#1189). -
chop()
now works correctly with data frames with 0 rows (#1206). -
chop()
'scols
argument is no longer optional. This matches the behavior ofcols
seen elsewhere in tidyr (#1205). -
unchop()
now respectsptype
when unnesting a non-list column (#1211).
Rectangling
hoist()
no longer accidentally removes elements that have duplicated names (#1259).
Grids
-
The grouped data frame methods for
complete()
andexpand()
now move the group columns to the front of the result (in addition to the columns you completed on or expanded, which were already moved to the front). This should make more intuitive sense, as you are completing or expanding "within" each group, so the group columns should be the first thing you see (#1289). -
complete()
now appliesfill
even when no columns to complete are specified (#1272). -
expand()
,crossing()
, andnesting()
now correctly retainNA
values of factors (#1275). -
expand_grid()
,expand()
,nesting()
, andcrossing()
now silently apply name repair to automatically named inputs. This avoids a number of issues resulting from duplicate truncated names (#1116, [#1221], [#1092], [#1037], [#992]). -
expand_grid()
,expand()
,nesting()
, andcrossing()
now allow columns from unnamed data frames to be used in expressions after that data frame was specified, likeexpand_grid(tibble(x = 1), y = x)
. This is more consistent with howtibble()
behaves. -
expand_grid()
,expand()
,nesting()
, andcrossing()
now work correctly with data frames containing 0 columns but >0 rows (#1189). -
expand_grid()
,expand()
,nesting()
, andcrossing()
now return a 1 row data frame when no inputs are supplied, which is more consistent withprod() == 1L
and the idea that computations involving the number of combinations computed from an empty set should return 1 (#1258).
Missing values
-
drop_na()
no longer drops missing values from all columns when a tidyselect expression that results in 0 columns being selected is used (#1227). -
fill()
now treatsNaN
like any other missing value (#982).