Merge fails on columns with trailing space in names

Open
#5,313 3 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
Clearly specified
Activity status
Stale
Tech stack
r
Domain
data

Research direction

Start by running the minimal R example with the trailing-space column name, then trace the merge() and data.table(x)[y, on=names(x)] entry points where column names are resolved. Done means both operations succeed with the existing "a " name and a regression test covers the behavior.

Written by the indexing model from the issue text.

Description

bug

Minimal example, tested on data.table Version: 1.14.0 and also 1.14.3 (from GitHub master, GithubSHA1: eed712ef45fd9198de6aa1ac1b672a7347253d18):

library(data.table)
x <- data.frame("a "=1:2, check.names=FALSE)
y <- data.frame("a "=1:2, b=3:4, check.names=FALSE)
merge(x, y, by=names(x))
#   a  b
# 1  1 3
# 2  2 4

merge(data.table(x), y, by=names(x))
# Error in colnamesInt(x, names(on), check_dups = FALSE) : 
# argument specifying columns specify non existing column(s): cols[1]='a'

names(data.table(x))
# [1] "a "

# The merge also fails in the data.table vernacular:
data.table(x)[y,on=names(x)]
# Error in colnamesInt(x, names(on), check_dups = FALSE) : 
#  argument specifying columns received non-existing column(s): cols[1]='a'

R session info:

R version 4.1.0 (2021-05-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Devuan GNU/Linux 3 (beowulf)

Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.3.5.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.14.3

loaded via a namespace (and not attached):
[1] compiler_4.1.0 tools_4.1.0   
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.