1

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

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)
          }
}
4

2 回答 2

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],...)退出公式模式来获得相同的结果。

于 2013-08-26T12:29:01.843 回答
2

在公式中,该术语-1被解释为“无截距”。当然,这对您的情节没有直接影响,因此被忽略。

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

于 2013-08-26T12:38:57.490 回答