1

我在 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

由于我没有x在for循环中指定索引号,我猜测只会使用第一个元素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

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

4

1 回答 1

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
于 2013-07-16T12:46:14.527 回答