我编写了一个脚本,如果我逐行运行它,或者如果我将它作为一个函数执行,它执行时没有问题,但是当我把它放在一个自制的包中,并尝试运行它时,它失败了这个错误:
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"
之后包装是相同的。