Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2 for循环_R_Loops_Ggplot2 - Fatal编程技术网

R ggplot2 for循环

R ggplot2 for循环,r,loops,ggplot2,R,Loops,Ggplot2,我试图在ggplot中处理for循环,在这里我替换了一个变量,该变量应该指示数据子集的现有变量的名称 这是循环,但我得到一个错误: list1=c("name1","name2",...) list2=c("name1","name2",...) for (name in 1:2) { g=ggplot(data=data[paste("data$MEPS %in% list",name,sep=""),], aes(x=Year, y=RR, colour=MEPS, group

我试图在ggplot中处理for循环,在这里我替换了一个变量,该变量应该指示数据子集的现有变量的名称

这是循环,但我得到一个错误:

list1=c("name1","name2",...)
list2=c("name1","name2",...)

for (name in 1:2) {
g=ggplot(data=data[paste("data$MEPS %in% list",name,sep=""),], 
     aes(x=Year, y=RR, colour=MEPS, group=MEPS 
       ))+
geom_line()+geom_point()+scale_y_continuous(breaks=seq(0, 100, 10))+
print(g)
}
但是,我得到以下错误:

Error in seq.default(h[1], h[2], length = n) : 
'to' cannot be NA, NaN or infinite 
这看起来应该很容易-基本上我想绘制线图,其中每个图都包含列表1或列表2中指定的特定区域的信息


编辑:为了澄清,这段代码应该做的是生成两个ggplot对象,一个有3行,另一个有2行。这三行表示我想显示的项目,它们在%list1中为%,在list2中也是一样。这就是这里的困惑所在。

考虑以下示例作为解决问题的原型。我们有mtcars数据,需要每个原产国的mpg与wt的折线图

我可以环游各个国家,选择德国的汽车,绘制它们,然后是日本的,等等。相反,我为国家定义了一个新的因子,并根据row.names进行分配。使用组美学,ggplot将继续进行,并为每个国家绘制一条单独的线。这不是一个很好的可视化的数据,但它确实给你一个原型来遵循

data(mtcars)
mymtcars<-mtcars

mymtcars$country<- c(rep("JP",3),rep("US",4),rep("DE",7),rep("US",3),"IT",rep("JP",3),rep("US",4),"IT","DE","UK","US",rep("IT",2),"SE")

ggplot(mymtcars, aes(x=wt, y=mpg, group=country)) + geom_line(aes(colour=country))

@Mamoun benghzeal提供的代码运行得非常好

for (name in 1:2) {
png(paste("plot",name,".png",sep=""),width=800, height=600)
g=ggplot(data=data[eval(parse(text = paste("data$MEPS %in% list",name,sep=""))),],
     aes(x=Year, y=RR, colour=MEPS, group=MEPS))+
geom_line(size=.8)+scale_y_continuous(breaks=seq(0, 100, 10))+labs(y="Response Rate")+
coord_cartesian(ylim=c(0, 100))
print(g)
dev.off()
}

通过在数据框中定义一个将MEP映射到listx的新因子变量,这可能更容易实现。然后试着将该变量作为一个组使用。您能更好地使用它吗?我是R新手,虽然你的答案可能很好,但我不确定我是否知道我需要根据它做什么。嗨,如果你必须这样标识,那么你应该像下面这样计算你的表达式data=data[evalparsetext=pastedata$MEPS%in%list,name,sep=,]我试着这么做,但我还是犯了同样的错误……想法?事实上,你提供的第一行有效!这里是最终的解决方案:谢谢@vpipkt,但是如果我想在一个图中将DE和US汽车作为两条单独的线绘制在一起,然后在另一个图中将它和JP作为两条单独的线绘制在一起呢?这就是我遇到的问题。