int NA的内部表示

时间:2019-06-08 15:34:14

标签: r

这是有关R内部构件的问题。 R中如何表示整数NA值? 与浮动不同,没有魔术位序列来表示NaN。

# Create big array. newer versions of R won't allocate memory to store data
# Instead star/end values are stored internally
a <- 1:1e6 # 

# Change some random value. This will cause and array to be allocated
a[123] <- NA
typeof(a)

此时, a 仍然是整数数组。 a [123]如何在内部表示? R是否使用一些魔术数字来表示整数是NA?

我对整数的内部表示形式的主要兴趣与二进制读/写(readBin / writeBin)有关。使用外部源执行二进制I / O时如何处理NA通过套接字?

1 个答案:

答案 0 :(得分:4)

R使用最小整数值表示NA。在4字节系统中,有效整数值通常为-2,147,483,648至2,147,483,647,但在R

> .Machine$integer.max
[1] 2147483647
> -.Machine$integer.max
[1] -2147483647
> -.Machine$integer.max - 1L
[1] NA
Warning message:
In -.Machine$integer.max - 1L : NAs produced by integer overflow

> .Internal(inspect(NA_integer_))
@7fe69bbb79c0 13 INTSXP g0c1 [NAM(7)] (len=1, tl=0) -2147483648