我的问题是:假设您计算出一个算法可以给出迭代次数,并且您想要将迭代次数打印出来。但是输出结果总是包含很多小数位,例如以下内容:
64.00000000
在R中,通过类型转换得到整数是可能的吗?你会如何做?
64.00000000
在R中,通过类型转换得到整数是可能的吗?你会如何做?
在将值强制转换为整数模式时有一些需要注意的地方。假设您有某种结构中的各种数字。如果您正在使用矩阵,则打印例程将以相同的精度显示所有数字。但是,您可以更改该级别。如果您使用算术过程计算此结果,则它实际上可能小于以64位显示的值。
> 64.00000000-.00000099999
[1] 64
> 64.00000000-.0000099999
[1] 63.99999
假设您希望在该结构的所有值中,以整数形式显示,请使用以下最安全的方式:
round(64.000000, 0)
否则,由于可能发生这种情况。
> as.integer(64.00000000-.00000000009)
[1] 63
另一个需要注意的是,整数的取值范围要比浮点数小得多。
函数is.integer
可用于测试整数模式。
is.integer(3)
[1] FALSE
is.integer(3L)
[1] TRUE
无论是round还是trunc函数都不会返回整数模式下的向量:
is.integer(trunc(3.4))
[1] FALSE
num.iterations <- 0L
或 num.iterations <- integer(1)
,或者你犯了将其设置为数字的错误,如 0
?1
还是一个整数 1L
?class
函数检查变量的类型来查看代码。as.integer()
将数字截断至0阶,因此您必须添加0.5以获得适当的近似值。dd<-64.00000000
as.integer(dd+0.5)
as.integer(matrix_object)
会将矩阵强制转换为向量,这不是您想要的。相反,您可以使用storage.mode(matrix_object) <- "integer"
来保持矩阵形式。
as.integer(64.000)
查看?as.integer - Brandon Bertelsen