We are creating a package where one of our functions uses functions of the data.table package.
Instead of importing entire packages through our roxygen header, we try to use ::
as much as possible in our code.
For a function, this is easy. For example:
data.table::setkey(our_data_1, our_variable)
Yet, we do not know how to do this for a method. For example:
our_data_3 <- our_data_1[our_data_2, roll = "nearest"]
where [
has a specific method for data.tables, which is indicated by:
methods(`[`)
I have tried multiple approaches. Multiple combinations, using @importFrom
, failed. For example, adding the following line to our roxygen header...
@importFrom data.table `[.data.table`
...returned the following when running devtools::document()
:
Warning message:
object ‘[.data.table’ is not exported by 'namespace:data.table'
I have also tried things like [.data.table
within our code, but those failed as well...
Importing the entire data.table package in our roxygen header worked (@import data.table
), but this is not preferred since we want to refer to the package of each function within our code (or at least use @importFrom
).
Is there a way to use the [
method of data.table within the code of a function without importing the entire data.table package? Or is it at least possible to only import the method, for example through using @importFrom
in our roxygen header?
Thank you in advance!
.datatable.aware=TRUE
within the function body, which did not resolve my problem. After tinkering around with the working example you've provided, I noticed that you placed it outside the function body. Moving it there solved it! Thank you for taking time to help me out and providing the working example. – Odontology