【发布时间】:2015-05-12 07:07:22
【问题描述】:
我正在尝试对 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
这看起来应该很容易——基本上我想绘制折线图,其中每个图都包含list1或list2中命名的某些区域的信息
编辑:为了澄清,这段代码“应该”做的是生成两个 ggplot 对象,一个有 3 行,另一个有 2 行。这 3 行代表我想要显示的项目,它们是 %in% list1,对于 list2 也是如此。这就是这里混乱的原因。
【问题讨论】:
-
这可能更容易通过在数据框中定义一个新的因子变量来实现,该变量将 MEPS 映射到 listx。然后尝试将该变量用作一个组。
-
你能更好地解释一下吗?我是 R 新手,虽然你的回答可能很好,但我不确定我是否知道我需要做什么。
-
嗨,如果你必须那样做,那么你应该像这样评估你的表达式 data=data[eval(parse(text = paste("data$MEPS %in% list" ,name,sep=""))),]
-
我试过这样做,但我仍然遇到同样的错误......想法?
-
实际上您提供的第一行有效!这是最终的解决方案: