長いスクリプトでは、ベクトルA(2614)の長さにデータフレームB(1456000)の行数を掛けなければなりません。R:単純な乗算は整数オーバーフローを引き起こす
2614 * 1456000
[1] 3805984000
仕事に乗算を取得する唯一の方法はround(length(A)) * nrow(B)
かlength(A) * round(nrow(B))
です:私はlength(A) * nrow(B)
とその直接行う場合、私は同じ番号を掛けたときには問題ありませんが、私はメッセージNAs produced by integer overflow
を取得します。しかし、length
とnrow
で生成される数値は、何とか整数でなければなりません!また、私は
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x-round(x)) < tol
...機能is.integerのヘルプページに提案し、以下の機能でこれをテストした...そして、もちろん、彼らは整数です。では、なぜ私はここで松葉杖が「丸い」必要がありますか?非常に混乱している...誰かがバックグラウンドで何が起こっているのか考えている?両方のオペランドが実際にクラスnumeric
のであるため、
'* 2614 1456000'です**ない**整数...'>クラス(1456000) [1] "数値" >クラス(1456000L) [1] "整数" 'のおかげ@Michele – Michele
、私はこのコメントのために私の答えを少し更新しました。 –