【问题标题】:Basic "for loop" in R [closed]R中的基本“for循环”
【发布时间】:2015-09-20 03:15:15
【问题描述】:

我有一个关于 R 循环的基本问题。但我无法理解。这是我的代码。

i<-0
z<-numeric(6)
for(i in 1:5){
i<-i+1
z[i]<-i
}

我希望输出是

>z
[1] 1 2 3 4 5 6

但它产生了

>z
[1] 0 2 3 4 5 6

为什么?

【问题讨论】:

  • 你有一个长度为 6 的向量。那么,为什么 1:5for 循环中?也许for(i in 1:6){z[i] &lt;- i}
  • 我认为i=6,i+1会超过6。
  • 对于这个具体问题,你不需要i+1。就做z[i] &lt;- i
  • 顺便说一句,你不需要循环z &lt;- 1:6(可能你知道,以防万一)
  • @Keven R 不是零索引语言。

标签: r loops for-loop


【解决方案1】:

您的循环设置以下值,按迭代细分:

  1. i&lt;-1
    i&lt;-2
    z[2]&lt;-2
  2. i&lt;-2
    i &lt;-3
    z[3]&lt;-3

  3. ...

  4. ...

  5. i&lt;-5
    i&lt;-6
    z[6]&lt;-6

如您所见,z[1] 永远不会设置,因为您在将 i 用作索引之前递增它。将循环更改为只执行z[i]&lt;-i,仅此而已。另外,如果您想设置6 元素,请将循环设置为从1 运行到6 而不是5

z<-numeric(6)
for(i in 1:6){
z[i]<-i
}

【讨论】:

  • 这是一个很好的答案,但可能值得指出的是整个方法很疯狂;在 R 中,你应该做 z
  • 我认为 OP 首先在编程逻辑上存在问题。似乎 R 作为首选语言纯粹是偶然的。当然,我的印象可能会被我自己不知道任何 R 的事实所影响......
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
相关资源
最近更新 更多