New features
select()
is substantially more powerful. You can use named arguments to
rename existing variables, and new functionsstarts_with()
,ends_with()
,
contains()
,matches()
andnum_range()
to select variables based on
their names. It now also makes a shallow copy, substantially reducing its
memory impact (#158, #172, #192, #232).summarize()
added as alias forsummarise()
for people from countries
that don't don't spell things correctly ;) (#245)
Bug fixes
filter()
now fails when given anything other than a logical vector, and
correctly handles missing values (#249).filter.numeric()
proxies
stats::filter()
so you can continue to usefilter()
function with
numeric inputs (#264).summarise()
correctly uses newly created variables (#259).mutate()
correctly propagates attributes (#265) andmutate.data.frame()
correctly mutates the same variable repeatedly (#243).lead()
andlag()
preserve attributes, so they now work with
dates, times and factors (#166).n()
never accepts arguments (#223).row_number()
gives correct results (#227).rbind_all()
silently ignores data frames with 0 rows or 0 columns (#274).group_by()
orders the result (#242). It also checks that columns
are of supported types (#233, #276).- The hybrid evaluator did not handle some expressions correctly, for
example inif(n() > 5) 1 else 2
the subexpressionn()
was not
substituted correctly. It also correctly processes$
(#278). arrange()
checks that all columns are of supported types (#266).- Working towards Solaris compatibility.
- Benchmarking vignette temporarily disabled due to microbenchmark
problems reported by BDR.