Mein alter Code so aussah verwenden:einfach ggplot2 Code Konvertieren 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
nun die ausgezeichnete data.table Bibliothek (statt data.frame) Ich habe begonnen:
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
Ich bin nicht genau sicher, was falsch ist, aber es scheint, dass der Code, den ich innerhalb J() ausführen nicht im äußeren Bereich erkannt wird.
Wie erreiche ich das idiomatisch auf data.table?
Ich glaube nicht, dass es so funktioniert. Denken Sie daran, dass eine data.table ** ein data.frame ist und verwenden Sie Ihren alten Code. – Roland
@Roland, ja natürlich kann ich noch meinen alten Code benutzen. Aber es würde den Zweck der Verwendung von data.table irgendwie besiegen. Schließlich möchte ich die Gruppe durch die Fähigkeit der Datentabelle (d. H. Dt [,, durch = etwas]) ausnutzen, anstatt split() zu verwenden. – Kostolma