Allow inversion of columns for update by reference

Open
#7,365 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
r
Domain
data

Research direction

Start by reproducing the requested dt[j = !(cols) := NULL] behavior and compare it with column selection using !c("col1") and !..cols. Trace the update-by-reference path for j and :=; done means inversion removes every column except the specified set without copying the data table.

Written by the indexing model from the issue text.

Description

In data.table the ! operator generally serves as a inversion operator. E.g. the operation dt[!condition], dt[!(1:3)], A[!B, on = ...] will invert the condition (naturally), invert the row indices (so !(1:3) does not evaluate to c(FALSE, FALSE, FALSE), but to c(4, 5, ...)) and do an anti-join. Even in column selection this works: dt[j = !c("col1")] will select all columns but col1, and dt[j = !..cols] will select all but the columns specified in cols.

But this does not work in combination with update by reference. In my opinion this would be useful to have. There are often occasions where you want to keep only a certain set of columns from the data table. For this it would be useful to be able to do

dt[j = !(cols) := NULL]

instead of having to do

dt <- dt[j = ..cols] # copies memory

or

dt[j = setdiff(names(dt), cols) := NULL] # Very verbose
Dominant language
R
Stars
3.9k
Forks
1.1k
Avg merge
14h 4m
Merged PRs (30d)
4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Rdatatable/data.table

All issues in Rdatatable/data.table

Similar issues

More R issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.