R动态命名要在ggplot2中使用的数据帧
是的,我知道在R中有很多关于动态命名变量的问题,是的,我已经回顾了它们,不,我仍然不能做我想做的事情 我已经创建了五个不同的数据框,每个数据框都保存着从另一个数据框中选择的信息。我想将这些较小的数据帧发送到ggplot。我已经创建了帧,但我似乎无法获得ggplot来解析动态数据帧名称。我尝试了各种版本的assign和as.name 以下是我的截断代码:R动态命名要在ggplot2中使用的数据帧,r,dynamic,ggplot2,R,Dynamic,Ggplot2,是的,我知道在R中有很多关于动态命名变量的问题,是的,我已经回顾了它们,不,我仍然不能做我想做的事情 我已经创建了五个不同的数据框,每个数据框都保存着从另一个数据框中选择的信息。我想将这些较小的数据帧发送到ggplot。我已经创建了帧,但我似乎无法获得ggplot来解析动态数据帧名称。我尝试了各种版本的assign和as.name 以下是我的截断代码: Alist <- unique(bigdf$initial.A) Blist <- unique(bigdf$initial.B)
Alist <- unique(bigdf$initial.A)
Blist <- unique(bigdf$initial.B)
for ( i in Alist ) {
for ( j in Blist ) {
assign( paste0("a", i, "b", j ), bigdf %>%
filter( initial.A == i, initial.B == j ))
}
}
Alistget
应该可以解决您的问题:
for (i in Alist){
for (j in Blist){
png(paste0("a", i, "b", j, ".png"))
useframe <- paste0("a", i, "b", j)
ggplot(get(useframe), aes(x = step)) + geom_density()
}
}
为什么不能将所有数据保存在一起并使用一个方面网格
编辑:
那么列表中会有什么呢?我喜欢使用列表。我看到了如何将数据帧创建和绘图循环在一起。但是循环在每种情况下都会做两到三件事,i和j都命名数据帧并用于选择要进入数据帧的信息,在使用图i和j的情况下,需要命名png,调用相关的数据帧,然后(未显示)也创建标题。我知道列表在每种情况下可能只做一件事,比如调用正确的数据帧,但所有的事情都是这样?@时间,你是绝对正确的,因为我不关心数据帧,它们是达到目的的一种手段,可能会因为整个算法变得麻烦而被分割。让我玩一下你提供的,我会发回的。有没有办法用列表来完成整个过程?好问题。我有四个自变量,我想用两个来做一个刻面网格。所以我需要把另外两个分开。我添加了一种方法来实现这一点,我不知道dplyrI是否存在。我想这正是我想要的,谢谢!
for (i in Alist){
for (j in Blist){
png(paste0("a", i, "b", j, ".png"))
useframe <- paste0("a", i, "b", j)
ggplot(get(useframe), aes(x = step)) + geom_density()
}
}
library(doParallel)
library(data.table)
bigDT <- setDT(bigdf)
setkeyv(bigDT, c("intial.A", "initial.B"))
foreach(i = seq(Alist)) %do% {
foreach(j = seq(Blist)) %do% {
x <- bigDT[J(c(Alist[i], Blist[i]))]
png(paste0("a", i, "b", j, ".png"))
ggplot(x, aes(step)) + . . .
}
}
library(ggplot2)
library(dplyr)
library(magrittr)
plot_data = function(sub_df) {
filename =
sub_df %>%
use_series(gear) %>%
first %>%
sprintf("gear_%s.pdf", .)
(ggplot(sub_df) +
aes(x = wt, y = mpg) +
geom_point() ) %>%
ggsave(filename, .)
data_frame()
}
mtcars %>%
group_by(gear) %>%
do(plot_data(.) )