1

次のコードが、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)
          }
}
4

2 に答える 2

2

数式では、この用語-1は「切片なし」と解釈されます。もちろん、これはプロットに直接影響を与えないため、無視されます。

この用語-1は特殊なケースであることに注意してください。たとえば、-2数式で を使用すると、エラー メッセージが表示されます。

于 2013-08-26T12:38:57.490 に答える
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 に答える