UPD。感谢@RYoda,我发现我忘记在import(data.table)
文件中添加NAMESPACE
。但是,即使没有data.table
,我仍然无法理解为什么所有其他import()
函数调用都能正常工作,如果有人能够解释它,我将不胜感激。
在我的包中,我定义了一个函数,除其他外,还从data.table中排除了一些列。我可以用不同的方式定义它:
# code in the package: \testexcl\R\test_exclude.R
test_exclude_col1 <- function(inpDT,col2excl){
output <- inpDT[, -c(col2excl), with=F]
invisible(output)
}
test_exclude_col2 <- function(inpDT,col2excl){
output <- inpDT[, setdiff(names(inpDT), col2excl), with=F]
invisible(output;
}
然后我可以使用这样的函数:
require(data.table)
require(testexcl) # my package
dt.iris <- data.table(iris)
dt.1 <- test_exclude_col1(dt.iris, 'Species') # Error
dt.2 <- test_exclude_col2(dt.iris, 'Species') # OK
test_exclude_col2()
按预期工作,test_exclude_col1()
引发错误Error in -c(col2excl) : invalid argument to unary operator
。让我最困惑的是,如果我在包中但不是在我的会话中定义完全相同的test_exclude_col1()
代码,它就能正常工作。为什么会这样?
我在R版本3.3.3(2017-03-06),Win10 x86_64-w64-mingw32 / x64,data.table_1.10.4,tools_3.3.3
P.S。为了确保我正在使用data.table,我已将此部分添加到包中:
test_exclude_col1a <- function(inpDT,col2excl){
print(class(inpDT));
inpDT <- data.table(inpDT);
output <- inpDT[, -c(col2excl), with=F]
invisible(output);
}
当我拨打test_exclude_col1a(dt.iris, 'Species')
时,会打印[1] "data.table" "data.frame"
,然后会出现同样的错误。
答案 0 :(得分:0)
要在您的包中使用var start = $scope.currentPage * $scope.pageSize;
var end = start + $scope.pageSize;
$scope.resultsToDelete = $scope.results.slice( start, end );
功能,您必须
data.table
包
尚不存在(例如,通过data.table
文件中的Imports:
)和DESCRIPTION
file =&gt; import()
NAMESPACE
功能
醇>
有关更多背景信息,请参阅: