mio vecchio codice si presentava così:Conversione semplice codice ggplot2 da usare data.table
library(ggplot2)
gp<-ggplot(NULL,aes(x=Income))
gp<-gp+geom_density(data=dat$Male,color="blue")
gp<-gp+geom_density(data=dat$Female,color="green")
gp<-gp+geom_density(data=dat$Alien,color="red")
plot(gp) #Works
Ora ho iniziato a utilizzare l'eccellente libreria data.table (invece di data.frame):
library(data.table)
cols<-c("blue","green","red")
gp<-ggplot(NULL,aes(x=Income))
dat[, list(gp+geom_density(data=.SD, color=cols[.GRP])), by=Gender]
#I even tried
dat[, list(gp<-gp+geom_density(data=.SD, color=cols[.GRP])), by=Gender]
plot(gp) #Error: No layers in plot
Non sono esattamente sicuro di ciò che è sbagliato, ma sembra che il codice eseguito all'interno di J() non venga riconosciuto nell'ambito esterno.
Come posso raggiungere questo in un modo idiomatico data.table?
Non penso che funzionerà in questo modo. Ricorda che data.table ** è ** un data.frame e usa il tuo vecchio codice. – Roland
@Roland, sì, naturalmente posso ancora usare il mio vecchio codice. Ma sarebbe una sorta di sconfiggere lo scopo di usare data.table. Dopotutto, voglio sfruttare il gruppo per abilità di datatable (cioè dt [,, by = something]) piuttosto che usare split() – Kostolma