dtplyr 1.3.0
Breaking changes
- dplyr and tidyr verbs no longer dispatch to dtplyr translations when used
directly on data.table objects.lazy_dt()
must now explicitly be called by
the user (#312).
New features
-
across()
output can now be used as a data frame (#341). -
.by
/by
has been implemented formutate()
,summarise()
,filter()
,
and theslice()
family (#399). -
New translations for
add_count()
,pick()
(#341), andunite()
. -
min_rank()
,dense_rank()
,percent_rank()
, &cume_dist()
are now mapped
to theirdata.table
equivalents (#396).
Performance improvements
-
arrange()
now utilizessetorder()
when possible for improved performance
(#364). -
select()
now drops columns by reference when possible for improved
performance (#367). -
slice()
uses an intermediate variable to reduce computation time of row
selection (#377).
Minor improvements and bug fixes
-
dtplyr no longer directly depends on
ellipsis
. -
Chained operations properly prevent modify-by-reference (#210).
-
across()
,if_any()
, andif_all()
evaluate the.cols
argument
in the environment from which the function was called. -
count()
properly handles grouping variables (#356). -
desc()
now supports use of.data
pronoun inside inarrange()
(#346). -
full_join()
now produces output with correctly named columns when a
non-default value forsuffix
is supplied. Previously thesuffix
argument
was ignored (#382). -
if_any()
andif_all()
now work without specifying the.fns
argument
(@mgirlich, #325) and for a list of functions specified in the
(@mgirlich, #335). -
pivot_wider()
'snames_glue
now works even whennames_from
contains
NA
s (#394). -
In
semi_join()
they
table is again coerced to a lazy table if
copy = TRUE
(@mgirlich, #322). -
mutate()
can now use.keep
. -
mutate()
/summarize()
correctly translates anonymous functions (#362). -
mutate()
/transmute()
now supportsglue::glue()
andstringr::str_glue()
without specifiying.envir
. -
where()
now clearly errors because dtplyr doesn't support selection
by predicate (#271).