从字符串到整数的 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
请注意,文档确实警告了溢出(来自?strtoi
):
无法解释为整数或会溢出的值将返回为NA_integer_
.
您可以编写自己的函数,将输出返回为数字而不是整数:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)