Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:is.integer不';不计算平方根_R - Fatal编程技术网

R:is.integer不';不计算平方根

R:is.integer不';不计算平方根,r,R,基本上,我想检查一个数字的平方根是否为整数,因此我尝试了以下函数: is.integer(sqrt(4)) 预期值为TRUE,而实际结果为FALSE。我读过其他一些帖子,似乎我需要使用L强制转换为整数。然而,我不知道我该如何使它在我的情况下工作 是的。甚至: is.integer(1) ## [1] FALSE 因为类型(与值相反)不是整数。查看帮助?is.integer。函数为。此处显示wholenumber: is.wholenumber <- function(x, t

基本上,我想检查一个数字的平方根是否为整数,因此我尝试了以下函数:

is.integer(sqrt(4))
预期值为
TRUE
,而实际结果为
FALSE
。我读过其他一些帖子,似乎我需要使用
L
强制转换为整数。然而,我不知道我该如何使它在我的情况下工作

是的。甚至:

is.integer(1)
## [1] FALSE
因为类型(与值相反)不是整数。查看帮助
?is.integer
。函数
为。此处显示wholenumber

is.wholenumber <-
     function(x, tol = .Machine$double.eps^0.5)  
         abs(x - round(x)) < tol
is.wholenumber(sqrt(4))
## [1] TRUE

wholenumber对您为什么使用√.Machine$double.eps,而不是直接使用epsilon值。看起来像是一个有点启发性的选择(将tol作为可选参数证明;如果他们非常确定tol的值,那么它就不是参数)我看到这只是一个tol默认值,如果您在方法体中使用tol的根,则会直接将其称为错误。机器默认epsilon通常应小于1,并且取根将使其更大,从而导致默认方法的精度低于配置的精度。另外,如果我设置了默认值,可能会得到与传递相同值作为参数不同的结果。我意识到这不是代码审查,但有时我会情不自禁。@ErwinKalvelagen谢谢你的解决方案。但是,我很难理解你的代码。什么是
.Machine$double.eps
?@psaxton:“如果我设置了默认值,可能会得到一个不同的结果,而不是将相同的值作为参数传递。”。真正地你能举一个可复制的例子吗?我很怀疑/惊讶。。。