R data.table ': =' работает при прямом вызове, но та же функция в пакете не работает

Используя пакет данных data.table,

Это работает:

instruction = "a = data.table(name=1:3, value=1:3, blah=1:3); a[,c('value', 'blah'):=NULL]"
eval(parse(text=instruction))
#   name
#1:    1
#2:    2
#3:    3

Это работает:

myFunc = function(instruction) {
eval(parse(text=instruction))
}
myFunc(instruction)
#   name
#1:    1
#2:    2
#3:    3

Теперь поместите эту функцию в пакет, загрузите ее и попробуйте вызвать ее. Это не работает:

myFuncInPackage(instruction)
#Error in `:=`(c("value", "blah"), NULL) : 
#  Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":=").

Зачем?

РЕДАКТИРОВАТЬ: @Roland указывает, что добавление data.table в пакетDepends поле заставляет это работать. Однако я не думаю, что это отличное решение, потому что пакет на самом деле не зависит, не требует и не использует data.table. Я просто хочу иметь возможность использовать data.table с пакетом.

Кроме того, все остальное с data.table прекрасно работает в функции, только не:= оператор.

Таким образом, я думаю, что следующий вопрос может быть следующим: должен ли я добавлять data.table в Зависит от каждого пакета, который я пишу, чтобы data.tables работали должным образом в функциях этого пакета? Это кажется неправильным ... как правильно подойти к этому?

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

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