4
從字符串到整數的32位二進制字符串轉換失敗。見下文將字符串轉換爲整數R時出錯
$ R> strtoi( 「10101101100110001110011001111111」,基部= 2)
$ R> [1] NA
任何想法的問題可能是?
從字符串到整數的32位二進制字符串轉換失敗。見下文將字符串轉換爲整數R時出錯
$ R> strtoi( 「10101101100110001110011001111111」,基部= 2)
$ R> [1] NA
任何想法的問題可能是?
它看起來像strtoi
不能處理的數字大於2^31
:
strtoi("1111111111111111111111111111111", base=2L)
# [1] 2147483647
strtoi("10000000000000000000000000000000", base=2L)
# [1] NA
這是最大整我的機器(也可能是你的)可以處理一個整數:
.Machine$integer.max
# [1] 2147483647
注意,文檔會警告溢出:無法解釋爲整數或溢出的值作爲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