这是一个学习data.table
包语法的个人项目。我正在尝试使用数据值来创建多个图形,并根据by
组值来标记每个图形。例如,给定以下数据:
# Generate dummy data
require(data.table)
set.seed(222)
DT = data.table(grp=rep(c("a","b","c"),each=10),
x = rnorm(30, mean=5, sd=1),
y = rnorm(30, mean=8, sd=1))
setkey(DT, grp)
数据由3组(a,b和c)的随机x和y值组成。我可以使用以下代码创建所有值的格式化图:
# Example of plotting all groups in one plot
require(ggplot2)
p <- ggplot(data=DT, aes(x = x, y = y)) +
aes(shape = factor(grp))+
geom_point(aes(colour = factor(grp), shape = factor(grp)), size = 3) +
labs(title = "Group: ALL")
p
这将创建以下图:
相反,我想为每个
by
组创建一个单独的图,并将图标题从“Group:ALL”更改为“Group:a”,“Group:b”,“Group:c”等。数据的documentation .table说:
.BY
is a list containing a length 1 vector for each item inby
. This can be useful when by is not known in advance. Theby
variables are also available toj
directly by name; useful for example for titles of graphs ifj
is a plot command, or to branch withif()
话虽这么说,我不明白如何使用
.BY
或.SD
为每个组创建单独的图。感谢您的帮助。
最佳答案
这是data.table
解决方案,不过,这不是我推荐的解决方案:
make_plot <- function(dat, grp.name) {
print(
ggplot(dat, aes(x=x, y=y)) +
geom_point() + labs(title=paste0("Group: ", grp.name$grp))
)
NULL
}
DT[, make_plot(.SD, .BY), by=grp]
对于此特定应用程序,您真正应该做的是@dmartin建议的内容。至少,那是我会做的。
关于r - data.table中以数据驱动的图名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21150347/