gpt4 book ai didi

r - `1L` 和 `1` 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 04:25:19 25 4
gpt4 key购买 nike

我经常看到符号1L(或2L3L等)出现在R代码中。 1L1 有什么区别? 1==1L 计算结果为 TRUE。为什么 R 代码中使用 1L

最佳答案

因此,@James 和 @Brian 解释了什么 3L 的含义。但是为什么你会使用它?

大多数时候它没有什么区别 - 但有时您可以使用它来让您的代码运行得更快并消耗更少的内存。 double (“数字”)向量每个元素使用 8 个字节。整数向量每个元素仅使用 4 个字节。对于大型向量,浪费的内存更少,CPU 的消耗也更少(因此通常速度更快)。

这主要适用于使用索引时。下面是一个示例,其中将整数向量加 1 将其变成 double 向量:

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)。 R 可能会在某个时候改变这一点(64 位整数会很好,它可以启用长度 > 2e9 的向量)。为了安全起见,只要您需要最大整数值(并对最小值取反),您就应该使用 .Machine$integer.max

关于r - `1L` 和 `1` 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7014387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com