我想在我自己的包中使用data.table包。 MWE如下:在我自己的包中使用data.table包
我創建一個函數test.fun,它只是創建一個小的data.table對象,然後用「A」列對「Val」列進行求和。該代碼是
test.fun<-function()
{
library(data.table)
testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25))
setkey(testdata, A)
res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"]
return(res)
}
當我創建一個普通R對話這個功能,然後運行功能,它將按預期工作。
> res<-test.fun()
data.table 1.8.0 For help type: help("data.table")
> res
A Ct Total Avg
[1,] 1 5 -0.5326444 -0.1065289
[2,] 2 5 -4.0832062 -0.8166412
[3,] 3 5 0.9458251 0.1891650
[4,] 4 5 2.0474791 0.4094958
[5,] 5 5 2.3609443 0.4721889
當我把這個功能到一個包,安裝包,加載包,然後運行該功能,我得到一個錯誤信息。
> library(testpackage)
> res<-test.fun()
data.table 1.8.0 For help type: help("data.table")
Error in `[.data.frame`(x, i, j) : object 'Val' not found
任何人都可以向我解釋這是爲什麼發生,我能做些什麼來解決它。很感謝任何形式的幫助。
我的猜測是您尚未聲明依賴關係。您應該從函數中移除'library(data.table)',並在您的名稱空間和DESCRIPTION中聲明'depends:data.table'。 – Andrie