Sto cercando di usare il pacchetto data.table all'interno del mio proprio pacchetto. MWE è la seguente:Utilizzando pacchetto data.table dentro il mio pacchetto
Creo una funzione, test.fun, che crea semplicemente un piccolo oggetto data.table, quindi somma il raggruppamento di colonne "Val" per la colonna "A". Il codice è
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)
}
Quando creo questa funzione in una normale sessione R e quindi eseguo la funzione, funziona come previsto.
> 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
Quando ho messo questa funzione in un pacchetto, installare il pacchetto, caricare il pacchetto, e quindi eseguire la funzione, ricevo un messaggio di errore.
> 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
Qualcuno può spiegarmi perché questo sta accadendo e cosa posso fare per risolverlo. Qualsiasi aiuto è molto apprezzato.
La mia ipotesi è che non hai dichiarato una dipendenza. Dovresti rimuovere 'library (data.table)' dalla tua funzione e dichiarare 'depends: data.table' nel tuo namespace e DESCRIPTION. – Andrie