Learn R Programming

rsample (version 1.1.1)

rsample-dplyr: Compatibility with dplyr

Description

rsample should be fully compatible with dplyr 1.0.0.

With older versions of dplyr, there is partial support for the following verbs: mutate(), arrange(), filter(), rename(), select(), and slice(). We strongly recommend updating to dplyr 1.0.0 if possible to get more complete integration with dplyr.

Arguments

Version Specific Behavior

rsample performs somewhat differently depending on whether you have dplyr >= 1.0.0 (new) or dplyr < 1.0.0 (old). Additionally, version 0.0.7 of rsample (new) introduced some changes to how rsample objects work with dplyr, even on old dplyr. Most of these changes influence the return value of a dplyr verb and determine whether it will be a tibble or an rsample rset subclass.

The table below attempts to capture most of these changes. These examples are not exhaustive and may not capture some edge-cases.

Joins

The following affect all of the dplyr joins, such as left_join(), right_join(), full_join(), and inner_join().

Joins that alter the rows of the original rset object:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
join(rset, tbl)errorerrortibble

The idea here is that, if there are less rows in the result, the result should not be an rset object. For example, you can't have a 10-fold CV object without 10 rows.

Joins that keep the rows of the original rset object:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
join(rset, tbl)errorerrorrset

As with the logic above, if the original rset object (defined by the split column and the id column(s)) is left intact, the results should be an rset.

Row Subsetting

As mentioned above, this should result in a tibble if any rows are removed or added. Simply reordering rows still results in a valid rset with new rsample.

Cases where rows are removed or added:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
rset[ind,]tibbletibbletibble
slice(rset)rsettibbletibble
filter(rset)rsettibbletibble

Cases where all rows are kept, but are possibly reordered:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
rset[ind,]tibblersetrset
slice(rset)rsetrsetrset
filter(rset)rsetrsetrset
arrange(rset)rsetrsetrset

Column Subsetting

When the splits column or any id columns are dropped or renamed, the result should no longer be considered a valid rset.

Cases when the required columns are removed or renamed:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
rset[,ind]tibbletibbletibble
select(rset)rsettibbletibble
rename(rset)tibbletibbletibble

Cases when no required columns are affected:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
rset[,ind]tibblersetrset
select(rset)rsetrsetrset
rename(rset)rsetrsetrset

Other Column Operations

Cases when the required columns are altered:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
mutate(rset)rsettibbletibble

Cases when no required columns are affected:

operationold rsample + old dplyrnew rsample + old dplyrnew rsample + new dplyr
mutate(rset)rsetrsetrset