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 <[email protected]>
Maintainer: Ken Williams <[email protected]>
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
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help