我真的只想做像
这样的事情x <- as.integer(c(1,2,3))
但是因为c(1,2,3)存储为浮点向量,我担心我会遇到截断问题,例如
> as.integer(1.99999999999)
[1] 1
我怎么知道我很安全?
答案 0 :(得分:10)
您可以使用后缀L
:
> x <- c(1L, 2L, 3L)
> is.integer(x)
[1] TRUE
> x <- 1L:3L
> x
[1] 1 2 3
> is.integer(x)
[1] TRUE
或者如果您已经有一个数字向量并将其转换为整数,您可以明确地描述规则:
> x <- c(-0.01, 1.999, 2, 3.000001)
> as.integer(round(x))
[1] 0 2 2 3
> as.integer(floor(x))
[1] -1 1 2 3
> as.integer(trunc(x))
[1] 0 1 2 3
> as.integer(ceiling(x))
[1] 0 2 2 4