Bug: Using data.table inside own package messes up bracket [] operator

Bug: Using data.table inside own package messes up bracket [] operator

In a data.table object, the bracket [] operator can be used to extract a row.

dt = data.table::data.table(a = 1:3, b = 10:12)
data.table::setkey(dt, a)
dt[2]$b = 20
print(dt[2])
  #>    a  b
  #> 1: 2 20

This is different than the usual bracket in a data.frame object. Here, the above idiom gives an error:

df = data.frame(a = 1:3, b = 10:12)
print(dt[2])
  #> Error in dt[2]: object of type 'closure' is not subsettable

But when using that idiom inside my own package, the behaviour of the bracket [] operator is different. Instead of returning a row, it returns a column then:

dt = data.table::data.table(a = 1:3, b = 10:12)
data.table::setkey(dt, a)
dt[2]$b = 20
print(dt[2])
  #>     b
  #> 1: 20
  #> 2: 20
  #> 3: 20

To solve the problem, put import(data.table) line into NAMESPACE or put the following lines into any R script file in the package, so that devtools::document puts import into NAMESPACE.

  #' @import data.table
NULL