markfairbanks / tidytable

Tidy interface to 'data.table'
https://markfairbanks.github.io/tidytable/
Other
450 stars 32 forks source link

deprecated notation #782

Closed muhsinciftci closed 1 year ago

muhsinciftci commented 1 year ago

Hi, Many thanks for developing this great package, bringing dplyr and data.table together. However, in the last version the dot notations, for example "select." or "filter." are deprecated. Wouldn't it be great to keep those dot notations to make it easier to distinguish them from standard dplyr functions?

Thanks.

markfairbanks commented 1 year ago

The function.() functions are going to continue being deprecated, and will be removed from the package sometime in the near future.

In general here's the reasoning.

People were confused by when to use the dot. They would try things like select.(starts_with.("x")) or mean.(x) and were constantly getting errors about whether functions existed or not. So to make it easier I added "dotless" functions (select(), filter(), etc.).

At first glance I could just keep both and people could choose which version to use, but R was having trouble distinguishing S3 methods for the dotless functions.

Not sure if you've built S3 methods before, but they're done using function.class() syntax. So for a data.frame I would export select.data.frame() in the background. When I tried to export select.() R would assume I was exporting select() for an empty class of "" as opposed to a different function. Using S3 methods is pretty core to building a coherent package like tidytable for data frame manipulation, and also allows other people to extend the tidytable class for their own packages.

As a result, I need to either completely remove either the dot or dotless functions. Since the dot functions were causing so many issues for users only the dotless functions can remain.

Hope this made sense - if you have any questions let me know.