我想用下面的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的值。
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中的循环没有值。