[datatable-help] Import problem with data.table in packages
Matthew Dowle
mdowle at mdowle.plus.com
Wed May 1 23:12:35 CEST 2013
Hi,
This rings a bell actually. data.table uses .onLoad currently but it
should be using .onAttach, I seem to recall.
http://r.789695.n4.nabble.com/Error-in-a-package-that-imports-data-table-tp4660173p4660637.html
I had a hunt around but couldn't find if we decided data.table should
move from .onLoad to .onAttach. Does anyone know/remember?
Thanks, Matthew
On 01.05.2013 21:59, Ken Williams wrote:
> Hi,
>
> I've got a small test package constructed like so:
>
> ------------ R/MyCode.R: ---------------
> ##' Example function.
> ##'
> ##' @export
> ##' @import data.table
> myfunc <- function() {
> dt1 <- data.table(time=1:5, key='time')
> dt2 <- data.table(time=3:8, key='time')
> dat <- merge(dt1, dt2, all=TRUE)
> }
>
> ------------ DESCRIPTION: ---------------
> Package: TestMod
> Type: Package
> Title: My test package
> Version: 1.0
> Author: Ken Williams <kwilliams at windlogics.com>
> Maintainer: Ken Williams <kwilliams at windlogics.com>
> Description: A test package
> License: BSD
> Imports:
> data.table
> Collate:
> 'MyCode.R'
> -----------------------------------------------
>
> I process the package with ROxygen in RStudio, which produces an
> empty `inst/` directory, some docs in `man/`, and a `NAMESPACE` file:
>
> ------------ DESCRIPTION: ---------------
> export(myfunc)
> import(data.table)
> -----------------------------------------------
>
> Now, if I start a fresh R session and load this package, I get a
> namespace error:
>
> ------------ R 2.15.2 session: ---------------
>> library(TestMod)
>> myfunc
> function ()
> {
> dt1 <- data.table(time = 1:5, key = "time")
> dt2 <- data.table(time = 3:8, key = "time")
> dat <- merge(dt1, dt2, all = TRUE)
> }
> <environment: namespace:TestMod>
>> myfunc()
> Error in rbind(deparse.level, ...) :
> could not find function ".rbind.data.table"
> -----------------------------------------------
>
> Sometimes, in other (more complicated) code, I instead get the error
> 'could not find function "data.table"'.
>
> To my eyes, the imports look correct, so I can't see what the problem
> is:
>
> ------------ R 2.15.2 session: ---------------
>> getNamespaceImports('TestMod')$data.table
> %between% %chin% %like%
> .__C__data.table
> "%between%" "%chin%" "%like%"
> ".__C__data.table"
> .__C__IDate .__C__ITime .__T__$:base
> .__T__$<-:base
> ".__C__IDate" ".__C__ITime" ".__T__$:base"
> ".__T__$<-:base"
> .__T__[:base .rbind.data.table :=
> alloc.col
> ".__T__[:base" ".rbind.data.table" ":="
> "alloc.col"
> as.chron.IDate as.chron.ITime as.data.table
> as.IDate
> "as.chron.IDate" "as.chron.ITime" "as.data.table"
> "as.IDate"
> as.ITime between chgroup
> chmatch
> "as.ITime" "between" "chgroup"
> "chmatch"
> chorder CJ copy
> data.table
> "chorder" "CJ" "copy"
> "data.table"
> fread haskey hour
> IDateTime
> "fread" "haskey" "hour"
> "IDateTime"
> is.data.table key key<-
> last
> "is.data.table" "key" "key<-"
> "last"
> like mday month
> quarter
> "like" "mday" "month"
> "quarter"
> rbindlist set setattr
> setcolorder
> "rbindlist" "set" "setattr"
> "setcolorder"
> setkey setkeyv setnames
> SJ
> "setkey" "setkeyv" "setnames"
> "SJ"
> tables test.data.table timetaken
> truelength
> "tables" "test.data.table" "timetaken"
> "truelength"
> wday week yday
> year
> "wday" "week" "yday"
> "year"
> -----------------------------------------------
>
> Any suggestions?
>
> I think for now, I can work around the problem by doing 'Depends:
> data.table' in my `DESCRIPTION` file. I'd like to not do that
> though.
>
> --
> Ken Williams, Senior Research Scientist
> WindLogics
> http://windlogics.com
>
>
> ________________________________
>
> CONFIDENTIALITY NOTICE: This e-mail message is for the sole use of
> the intended recipient(s) and may contain confidential and privileged
> information. Any unauthorized review, use, disclosure or distribution
> of any kind is strictly prohibited. If you are not the intended
> recipient, please contact the sender via reply e-mail and destroy all
> copies of the original message. Thank you.
> _______________________________________________
> datatable-help mailing list
> datatable-help at lists.r-forge.r-project.org
>
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
More information about the datatable-help
mailing list