As an experimental feature the placeholder _ can now also be used in the ‘rhs’ of a forward pipe |> expression as the first argument in an extraction call, such as _$coef. More generally, it can be used as the head of a chain of extractions, such as _$coef[[2]].
R-devel/News, Mon, 13 Feb 2023
In upcoming versions of R, syntax such as the following will be supported:
as.data.table(mtcars) |>
_[am == 1] |>
_[, .(maxhp = max(hp)), by = .(cyl)]
# cyl maxhp
# 1: 6 175
# 2: 4 113
# 3: 8 335
With this in mind, I think it's worth reconsidering whether DT() should remain on the release roadmap.
Some arguments in favor of scrapping DT() are as follows:
- Base R functionality
dt |> _[...] will address all use cases for DT()
- Introducing an alternate syntax for calling
[.data.table will be confusing for new users. Advertising this functionality also eliminates an opportunity to educate users about existing dt[...][...] chaining capabilities baked in by default
- Exporting
DT() will lead to namespace collision issues with the DT::DT() exported by the widely used DT package
DT() acceptance of non data.table objects is likely to cause user confusion
- Supporting
DT() going forward will be a drain on valuable maintainer's time - DT() Labeled Issues
DT() has not yet been exported in a CRAN release so no there will no impacts to reverse dependencies and limited impact to users who have adopted this form
That being said, this is just my two cents as a satisfied user of data.table interested in the long term success of the package. Happy to hear counter arguments, and open to the idea that the broader community may see enough value to finish the push to support DT().
In upcoming versions of R, syntax such as the following will be supported:
With this in mind, I think it's worth reconsidering whether
DT()should remain on the release roadmap.Some arguments in favor of scrapping
DT()are as follows:dt |> _[...]will address all use cases forDT()[.data.tablewill be confusing for new users. Advertising this functionality also eliminates an opportunity to educate users about existingdt[...][...]chaining capabilities baked in by defaultDT()will lead to namespace collision issues with theDT::DT()exported by the widely used DT packageDT()acceptance of nondata.tableobjects is likely to cause user confusiondata.framerownames names #5430DT()#5129DT()going forward will be a drain on valuable maintainer's time -DT()Labeled IssuesDT()has not yet been exported in a CRAN release so no there will no impacts to reverse dependencies and limited impact to users who have adopted this formThat being said, this is just my two cents as a satisfied user of
data.tableinterested in the long term success of the package. Happy to hear counter arguments, and open to the idea that the broader community may see enough value to finish the push to supportDT().