私の古いコードは次のようになりました:
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
これで、(data.frameの代わりに)優れたdata.tableライブラリの使用を開始しました。
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
何が悪いのか正確にはわかりませんが、J()内で実行したコードが外部スコープで認識されていないようです。
data.tableの慣用的な方法でこれをどのように達成できますか?