代码之家  ›  专栏  ›  技术社区  ›  Ghost

R: 带循环的简单总结

  •  0
  • Ghost  · 技术社区  · 9 年前

    我试图用R中的for来模拟一个简单的和;我有几个向量,我试图实现一个简单的操作,并保持附加值。这是我的代码:

    sum=0
    for (i in 1:length(intx)-1) {
        val=((inty[i+1]-inty[i])*(intx[i+1]+intx[i]))
        print(val)
        sum=sum+val
        print(sum)
    }
    

    这两个指纹只是为了去毛刺;”“val”是每次迭代操作的结果,打印正确,但当我将其添加到“sum”时,它会失败,输出为:

    numeric(0)
    

    我已经测试过将“val”的值设置为常量,然后将其添加到“sum”中,这是有效的,但当“val”是I的函数时,它会失败(它在打印去毛刺器中输出正确的值,但当我将其添加至“sum”时会失败)。

    有什么建议吗?

    2 回复  |  直到 9 年前
        1
  •  0
  •   Rentrop    9 年前

    你的代码与joran的修复程序配合使用:

    sum=0
    for (i in 1:10) {
      val=i*2
      print(paste("val: ", val))
      sum=sum+val
      print(paste("sum: ", sum))
    }
    sum # 110 correct
    
        2
  •  0
  •   Rohit Das    9 年前

    intx向量中有哪些数据。如果您确定其数值,则可以通过以下方式强制数据类型为数值

    val=as.numeric((inty[i+1]-inty[i])*(intx[i+1]+intx[i]))
    

    理想情况下,我建议您不要使用循环,但让我们先解决您遇到的问题。

    事实上,我同意你的问题是关于索引的评论。使用1:(长度(intx)-1)