我经常看到这个符号1L
(或者2L
,3L
等)出现在 R 代码中。1L
和1
?1==1L
评估为TRUE
。1L
在R代码中使用?
答案
所以,@James 和 @Brian 解释道what 3L的意思是。why你会用它吗?
大多数时候它没有什么区别 - 但有时你可以使用它来让你的代码跑得更快 并消费内存较少。
这主要适用于使用索引时。
x <- 1:100
typeof(x) # integer
y <- x+1
typeof(y) # double, twice the memory size
object.size(y) # 840 bytes (on win64)
z <- x+1L
typeof(z) # still integer
object.size(z) # 440 bytes (on win64)
…但还要注意,过度使用整数可能是危险的:
1e9L * 2L # Works fine; fast lean and mean!
1e9L * 4L # Ooops, overflow!
…正如 @Gavin 指出的那样,整数的范围大约是 -2e9 到 2e9。
但需要注意的是,这适用于当前的 R 版本 (2.13)。 .Machine$integer.max
每当您需要最大整数值(并对最小值求反)时。