R中for循环的问题

问题描述 投票:0回答:1

我想用下面的for循环求1:10之间质数的平方。

sq_pr_no = function()
{
  sq_pr_no = c()
  for (i in 1:10)
  {
    for (p in 2:i - 1)
    {
      if (i %% p == 0)
      {
        sq_pr_no = c(sq_pr_no, i ^ 2)
      }
    }
  }
}

我得到的错误如下

在if (i %% p == 0) {中出错:缺少需要TRUEFALSE的值。

r for-loop
1个回答
1
投票

2:i - 1(2 : i) - 1. 你想 2 : (i - 1). 即便如此 i - 1 将是 0 在第一次迭代时,和 i %% 0 产量 NaN,这将导致你观察到的错误。

要修复该错误,请排除以下情况,即 p == 0.

(a : b 当与变量一起使用时,通常是一个危险的模式,因为如果使用 b < a.)

你的函数也没有返回任何值。你可能习惯于通过分配给一个与函数同名的变量来设置返回值,但R并不是这样工作的:在R中,一个函数的值是其最后一个表达式的值,而 for 遗憾的是,R中的循环没有值。

© www.soinside.com 2019 - 2024. All rights reserved.