【问题标题】:Plotting in a for loop: Why can't I subtract from the counter?在 for 循环中绘图:为什么我不能从计数器中减去?
【发布时间】:2013-08-26 12:15:34
【问题描述】:

为什么下面的代码在 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)
          }
}

【问题讨论】:

    标签: r for-loop plot counter


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-06-06
        • 2019-08-20
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 2011-11-19
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多