Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
strtoi无法将字符串转换为整数,返回NA_R - Fatal编程技术网

strtoi无法将字符串转换为整数,返回NA

strtoi无法将字符串转换为整数,返回NA,r,R,从字符串到整数的32位二进制字符串转换失败。见下文 strtoi("10101101100110001110011001111111", base=2) # [1] NA 你知道问题出在哪里吗?看来strtoi无法处理大于2^31的数字: strtoi("1111111111111111111111111111111", base=2L) # [1] 2147483647 strtoi("10000000000000000000000000000000", base=2L) # [1] NA

从字符串到整数的32位二进制字符串转换失败。见下文

strtoi("10101101100110001110011001111111", base=2)
# [1] NA

你知道问题出在哪里吗?

看来strtoi无法处理大于
2^31的数字:

strtoi("1111111111111111111111111111111", base=2L)
# [1] 2147483647
strtoi("10000000000000000000000000000000", base=2L)
# [1] NA
这是我的机器(可能还有你的机器)可以处理的整数的最大值:

.Machine$integer.max
# [1] 2147483647
convert <- function(x) {
    y <- as.numeric(strsplit(x, "")[[1]])
    sum(y * 2^rev((seq_along(y)-1)))
}

convert("1111111111111111111111111111111")
# [1] 2147483647
convert("10000000000000000000000000000000")
# [1] 2147483648
请注意,文档确实警告溢出(来自
?strtoi
):

无法解释为整数或可能溢出的值将作为
NA\u integer\uu
返回

您可以编写自己的函数,以数字而不是整数的形式返回输出:

.Machine$integer.max
# [1] 2147483647
convert <- function(x) {
    y <- as.numeric(strsplit(x, "")[[1]])
    sum(y * 2^rev((seq_along(y)-1)))
}

convert("1111111111111111111111111111111")
# [1] 2147483647
convert("10000000000000000000000000000000")
# [1] 2147483648
转换