Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

duplicate colnames gives uninformative error when joining with tibbles #3243

EdwinTh opened this issue Dec 7, 2017 · 1 comment
bug an unexpected problem or unintended behavior


Copy link

EdwinTh commented Dec 7, 2017

Tibbles don't allow for duplicate column names at creation:

> data_frame(x = 1:2, x = 3:4)
Error: Column `x` must have a unique name

The _join functions throw informative errors when join key is duplicate and x is a regular data.frame

> x <- data.frame(x = 1:2, x = 3:4)
> colnames(x) <- c("x", "x")
> inner_join(x, data.frame(x = 1:2))
Error: Column `x` must have a unique name

However, via the same back door the column names of a tibble can get duplicated. When trying to join then the error is no longer informative.

> x <- data_frame(x = 1:2, x2 = 3:4 )
> colnames(x) <- c("x", "x")
> inner_join(x, data_frame(x = 1:2))
Joining, by = "x"
Error in inner_join_impl(x, y, by$x, by$y, suffix$x, suffix$y, check_na_matches(na_matches)) : 
   Column `` is unknown

If possible, I think the best option here is close the back door route and throw an error at the second line of the last code block. Otherwise an informative error seems desired.

Copy link

krlmlr commented Dec 12, 2017

Thanks. I think we should check our inputs more stringently, and stop if we encounter a data frame with duplicate names. (We can't entirely prohibit the creation of data frames with duplicate column names.) But this breaking will require some time and planning. In the meantime, I agree that this particular error message should be improved.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
bug an unexpected problem or unintended behavior
None yet

No branches or pull requests

2 participants