2016-08-23 48 views
2

將data.table索引功能A[ , , by = ...]導入到我的包中的正確方法是什麼?如何導入data.table索引功能?

如果我有我的roxygen文檔包含:

importFrom data.table [.data.table

+1

導入整個'data.table'包是不是太麻煩了? – Bazz

回答

3

看起來你需要導入只是data.table功能和[方法將正確地分派。

subdt/R/mysubdt.R

mysubdt = function(x) { 
    stopifnot(class(x)[1L]=="data.table", c("s","g","v") %in% names(x), is.logical(x[["s"]])) 
    x[s==TRUE, sum(v), by=g] 
} 

subdt/NAMESPACE

importFrom(data.table, data.table) 
export(mysubdt) 

構建後和安裝包(如果你加載data.table過你不需要::,代碼假設你沒有):

library(subdt) 
x = data.table::data.table(
    s = c(TRUE,TRUE,FALSE,TRUE), 
    g = c("a","b","a","b"), 
    v = 1:4/10 
) 
mysubdt(x) 
# g V1 
#1: a 0.1 
#2: b 0.6