mã cũ của tôi trông như thế này:Chuyển đổi đang ggplot2 đơn giản để sử dụng 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
Bây giờ tôi đã bắt đầu sử dụng thư viện data.table tuyệt vời (thay vì 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
Tôi không chắc chắn những gì là sai, nhưng có vẻ như mã tôi chạy bên trong J() không được công nhận trong phạm vi bên ngoài.
Làm cách nào để đạt được điều này theo cách thành ngữ dữ liệu?
Tôi không nghĩ rằng nó sẽ hoạt động như thế. Hãy nhớ rằng một data.table ** là ** một data.frame và sử dụng mã cũ của bạn. – Roland
@Roland, có ofcourse tôi vẫn có thể sử dụng mã cũ của tôi. Nhưng nó sẽ đánh bại mục đích sử dụng data.table. Sau đó, tôi muốn khai thác nhóm bằng khả năng datatable (tức là dt [,, by = something]) thay vì sử dụng split() – Kostolma