Estoy tratando de usar el paquete data.table dentro de mi propio paquete. MWE es el siguiente:Uso del paquete data.table dentro de mi propio paquete
Creo una función, test.fun, que simplemente crea un pequeño objeto data.table, y luego suma la agrupación de columnas "Val" por la columna "A". El código es
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)
}
Cuando creo esta función en una sesión de R regular, a continuación, ejecutar la función, funciona como se esperaba.
> 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
Cuando puse esta función en un paquete, instale el paquete, cargar el paquete, y luego ejecutar la función, aparece un mensaje de error.
> 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
¿Alguien puede explicarme por qué sucede esto y qué puedo hacer para solucionarlo? Cualquier ayuda es muy apreciada.
Supongo que no has declarado una dependencia. Debe eliminar 'library (data.table)' de su función y declarar 'depends: data.table' en su espacio de nombres y DESCRIPTION. – Andrie