Ich versuche, das Paket data.table in meinem eigenen Paket zu verwenden. MWE ist wie folgt:
Ich erstelle eine Funktion, test.fun, die einfach ein kleines data.table-Objekt erstellt und dann die Spaltengruppierung "Val" durch die Spalte "A" summiert. Der Code ist
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)
}
Wenn ich diese Funktion in einer regulären R-Sitzung erstelle und dann die Funktion ausführe, funktioniert sie wie erwartet.
> 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
Wenn ich diese Funktion in ein Paket einfüge, das Paket installiere, das Paket lade und dann die Funktion ausführe, wird eine Fehlermeldung angezeigt.
> 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
Kann mir jemand erklären, warum dies geschieht und was ich tun kann, um es zu beheben. Jede Hilfe wird sehr geschätzt.
library(data.table)
aus Ihrer Funktion entfernen unddepends:data.table
in Ihrem Namespace und in DESCRIPTION deklarieren .