在for循环中绘图:为什么我不能从计数器中减去?

时间:2013-08-26 12:15:34

标签: r for-loop plot counter

为什么以下代码绘图指向x轴上的1:10而不是0:9? (我知道我可以用不同的方式编码来解决问题,不过,我想知道。)

y <- rep(1,10)

for (i in 1:10) {

          if (i == 1) {
                    plot(y[i]~(i-1),pch = 14,
                         ylim = c(0,2),
                         xlim=c(0,11))
          }
          else {points(y[i]~(i-1), pch = 14)
          }
}

2 个答案:

答案 0 :(得分:2)

您必须使用I()(原样)公式构造:

y <- rep(1,10)
for (i in 1:10) {
          if (i == 1) {
                    plot(y[i]~I(i-1),pch = 14,
                         ylim = c(0,2),
                         xlim=c(0,11))
          }
          else {points(y[i]~I(i-1), pch = 14)
          }
}

这是(根据?I)因为公式内的算术运算符(“+”,“ - ”,“*”和“^”)被解释为公式运算符(用于添加/删除术语或创建交互)而不是算术运算符。

您可以通过将plot来电更改为:plot(i-1,y[i],...)来取消公式模式。

答案 1 :(得分:2)

在公式中,术语-1被解释为&#34;没有拦截&#34;。当然,这对你的情节没有直接影响,因此被忽略了。

请注意,术语-1是一种特殊情况。如果您在公式中使用-2,则会收到错误消息。