首先,成功使用R多年并且无需知道此问题的答案是完全可行的。R在后台为您处理(常规)数字和整数之间的差异。
> is.numeric(1)
[1] TRUE
> is.integer(1)
[1] FALSE
> is.numeric(1L)
[1] TRUE
> is.integer(1L)
[1] TRUE
(将大写字母“ L”放入整数后会强制将其存储为整数。)
如您所见,“整数”是“数字”的子集。
> .Machine$integer.max
[1] 2147483647
> .Machine$double.xmax
[1] 1.797693e+308
整数只会超过20亿,而其他数字可能会更大。它们可以更大,因为它们存储为双精度浮点数。这意味着数字存储为两部分:指数(类似于上面的308,但以2为底而不是以10为底)和“有效位数”(例如上面的1.797693)。
请注意,“ is.integer”不是测试您是否有整数,而是测试数据的存储方式。
要注意的一件事是,:
如果起点和终点是整数,则冒号运算符将会返回整数。例如,1:5
创建一个integer
从1到5的数字向量。您无需附加字母L
。
> class(1:5)
[1] "integer"
参考:https://www.quora.com/What-is-the-difference-between-numeric-and-integer-in-R
as.integer(c(4.1, 5.2, 6.3, 6.4))
有助于您理解差异?您需要了解内部表示形式和打印内容完全不同。无论如何,请阅读有关计算机语言中的数据类型的内容。