【发布时间】:2013-03-20 15:35:07
【问题描述】:
我的旧代码如下所示:
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.table 库(而不是 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
我不完全确定出了什么问题,但似乎我在 J() 中运行的代码在外部范围内没有被识别。
如何以 data.table 惯用的方式实现这一点?
【问题讨论】:
-
我不认为它会那样工作。请记住,data.table 是 data.frame 并使用您的旧代码。
-
@Roland,是的,当然我仍然可以使用我的旧代码。但这会有点违背使用 data.table 的目的。毕竟,我想通过数据表的能力(即 dt[,,by=something])来利用组,而不是使用 split()
标签: r ggplot2 data.table