整数测试的工作(is.integer(2/2)返回FALSE)

时间:2015-05-22 22:19:48

标签: r

为什么以下内容会返回FALSE

is.integer(4/4)
is.integer(4/2)
is.integer(2/2)

有什么想法吗?

我可以做以下事情:

4 %% 4
4 %% 2
2 %% 2

但我的目标是了解函数is.integer。 谢谢!

1 个答案:

答案 0 :(得分:2)

来自?is.integer

  如果x包含整数,

is.integer(x)会测试!为了那个原因,   使用round,如示例中的函数is.wholenumber(x)。

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

R将4/4存储为double

> storage.mode(4/4)
# [1] "double"

你可以这样做:

x <- 4/4
storage.mode(x) <- "integer"
> is.integer(x)
# [1] TRUE