R data.table разрывы в экспортируемых функциях

У меня проблема с получением data.table для работы в экспортируемых функциях roxygen2.

Вот простая, поддельная функция в файле с именем foo.R (находится в каталоге R моего пакета), который использует data.table:

#' Data.table test function
#' @export
foo <- function() {
  m <- data.table(c1 = c(1,2,3))
  print(is.data.table(m))
  m[,sum(c1)]
}

Если я скопирую и вставлю эту функцию в R, эта функция будет работать нормально:

> foo <- function() {
+   m <- data.table(c1 = c(1,2,3))
+   print(is.data.table(m))
+   m[,sum(c1)]
+ }
> foo()
[1] TRUE
[1] 6

Но если я просто загружаю экспортированную функцию, R думает, что data.table является data.frame и ломается:

> rm(foo)
> load_all()
Loading test_package
> foo
function() {
  m <- data.table(c1 = c(1,2,3))
  print(is.data.table(m))
  m[,sum(c1)]
}
<environment: namespace:test_package>
> foo()
[1] TRUE
Error in `[.data.frame`(x, i, j) : object 'c1' not found

Что происходит?

ОБНОВИТЬ

Спасибо @GSee за помощь. Похоже, это на самом деле проблема Devtools. Проверьте код интерактивной командной строки ниже.

После загрузки библиотеки test_package,foo работает правильно:

> foo
function ()
{
    m <- data.table(c1 = c(1, 2, 3))
    print(is.data.table(m))
    m[, sum(c1)]
}
<environment: namespace:test_package>
> foo()
[1] TRUE
[1] 6

Бегload_all() ломает фу:

> load_all()
Loading test_package
> foo()
[1] TRUE
Error in `[.data.frame`(x, i, j) : object 'c1' not found

как-тоsource('R/foo.R') восстанавливает функциональность foo:

> source('R/foo.R')
> foo
function() {
  m <- data.table(c1 = c(1,2,3))
  print(is.data.table(m))
  m[,sum(c1)]
}
> foo()
[1] TRUE
[1] 6

И будущие звонкиload_all() не ломайсяfoo снова:

> load_all()
Loading test_package
> foo
function() {
  m <- data.table(c1 = c(1,2,3))
  print(is.data.table(m))
  m[,sum(c1)]
}
> foo()
[1] TRUE
[1] 6

Кроме того, я обновил до devtools 1.5 и попытался добавить.datatable.aware=TRUE, но это, похоже, ничего не делает.

Ответы на вопрос(1)

Ваш ответ на вопрос