"Can't assign to the same column twice in the same query" message unhelpful, and inconsistent

Open
#2,967 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
c, r
Domain
data

Research direction

Start at src/assign.c around line 377 and reproduce both assignments shown in the issue, including the by case. Read the R C API documentation and the referenced Duplicated implementation to understand the available duplicate information. Done means the duplicate-assignment error is more useful and the behavior is consistent across the demonstrated query forms.

Written by the indexing model from the issue text.

Description

consistency
DT = data.table(a = 1:5)
DT[ , c('b', 'b') := 10]
# Error in `[.data.table`(DT, , `:=`(c("b", "b"), 10)) : 
#   Can't assign to the same column twice in the same query (duplicates detected).

In more dynamic situations, this error is rather unhelpful.

Error happens here at the C level:

if (any_duplicated(cols,FALSE)) error("Can't assign to the same column twice in the same query (duplicates detected).");

any_duplicated is part of the R C API, the second argument is from_last.

Probably OK to jump to using something with Duplicated within the if (any_duplicated(cols, FALSE)) branch.


What's more, this error doesn't occur if the assignment takes place with by:

DT[ , c('b', 'b') := 10, by = a]
#    a  b
# 1: 1 10
# 2: 2 10
# 3: 3 10
# 4: 4 10
# 5: 5 10
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.