以下for循环如何工作?

时间:2013-07-16 12:29:57

标签: r loops for-loop

我在R中这样做。虽然有一种快捷方式在R中执行以下操作,但我想查看它:

   x <- c(7,6,8,7)
   y <- 1
   n <- length(x)
   p=1
   s = 0
   for(i in 1:n){
          s = s + (x^p * y^p)
   }

   s

由于我没有在for循环中指定x的索引号,我猜测只会使用x的第一个元素。所以我做了一张桌子:

    i     s= s + (x^p * y^p)
    1     s= 0 + (7^1 * 1^1)=7
    2     s= 7 + (7^1 * 1^1)=14
    3     s= 14 + (7^1 * 1^1)=21
    4     s= 21 + (7^1 * 1^1)=28 

但结果是:

    s
   [1] 28 24 32 28

我无法以任何方式匹配此结果。它是如何工作的?

1 个答案:

答案 0 :(得分:4)

x不是单个整数,而是整数向量。你需要按照上帝的意图对你的x进行分组。指定x时,R不仅使用第一个元素,而是使用所有元素。这是使您的解决方案蒙上阴影的假设。

x <- c(7,6,8,7)
y <- 1
n <- length(x)
p <- 1
s <- 0
for(i in 1:n){
  s <- s + (x[1]^p * y^p)
  message(s)
}

7
14
21
28