欧拉项目#1在R

jmo*_*jmo 7 for-loop r while-loop

问题

找到1000以下可以被3或5整除的所有数字的总和

我创建的一个解决方案

x <- c(1:999)
values <- x[x %% 3 == 0 | x %% 5 == 0]
sum(values
Run Code Online (Sandbox Code Playgroud)

第二种解决方案我无法开展工作并需要帮助.我把它贴在下面. 我正在尝试使用循环(在这里,我使用while(),然后我会尝试()).我仍然在努力保持对索引(向量中的位置)的引用与向量内的值/观察分开.循环似乎让我更难以区分这两者.

为什么这不能产生欧拉#1的答案?

x <- 0
i <- 1
while (i < 100) {
  if (i %% 3 == 0 | i %% 5 == 0) {
    x[i] <- c(x, i)
  }  
  i <- i + 1
}
sum(x)
Run Code Online (Sandbox Code Playgroud)

换句话说,这是我理解的事情:

  1. x得到值0
  2. 我得到了价值1
  3. 而对象i的值(不是索引#)<1000
  4. 如果可以被3或5整除
  5. 将该数字i添加到向量x
  6. 按顺序将i加1(以使循环保持定义的限制为1e3
  7. 总结向量x中的所有项目

我猜x [i] < - c(x,i)不是向元素x添加元素的正确方法.我该如何解决这个问题以及其他什么不准确?

Sve*_*ein 4

首先,你的循环运行直到i < 100,而不是i < 1000

其次,替换x[i] <- c(x, i)x <- c(x, i)以将元素添加到向量中。