在包

时间:2017-07-06 19:55:15

标签: r data.table

我编写了一个脚本,如果我逐行运行它,或者如果我将它作为一个函数执行,它执行时没有问题,但是当我把它放在一个自制的包中,并尝试运行它时,它失败了这个错误:

Error in FUN(X[[i]], ...) : 
  only defined on a data frame with all numeric variables

我真的不明白。如果我str()这个data.table看起来一切都是正确的类型。

Classes ‘data.table’ and 'data.frame':  631 obs. of  4 variables:
 $ week_ending: Date, format: "1986-05-11" "1986-05-18" "1986-05-25" ...
 $ idx        : num  388 424 403 414 423 441 449 435 459 465 ...
 $ Year       : int  1986 1986 1986 1986 1986 1986 1986 1986 1986 1986 ...
 $ szWeek     : int  1 2 3 4 5 6 7 8 9 10 ...
 - attr(*, ".internal.selfref")=<externalptr> 
NULL

这是失败的函数行(当放在包中时):

newCond0[, .SD[max(szWeek) == szWeek], year(week_ending)]

基本上问题可归结为:如果包在包外运行,是否有任何原因无法在包内运行?

编辑:

从函数内部运行search()(包内外)会产生稍微不同的结果:

内部(功能失败)

 [1] ".GlobalEnv"            "devtools_shims"        "package:myPackage"

外部(功能执行)

 [1] ".GlobalEnv"            "package:myPackage" "devtools_shims" 

之后包装是相同的。

0 个答案:

没有答案