Trong tập lệnh dài hơn, tôi phải nhân chiều dài của vectơ A (2614) với số hàng của một khung dữ liệu B (1456000). Nếu tôi làm điều đó trực tiếp với length(A) * nrow(B)
Tôi nhận được thông báo NAs produced by integer overflow
mặc dù không có vấn đề khi tôi nhân lên những con số giống nhau:R: phép nhân đơn giản gây ra tràn số nguyên
2614 * 1456000
[1] 3805984000
Cách duy nhất để có được những nhân để làm việc là round(length(A)) * nrow(B)
hoặc length(A) * round(nrow(B))
. Nhưng các con số được tạo ra bởi length
và nrow
phải là số nguyên dù sao đi nữa! Hơn nữa, tôi đã thử nghiệm tính năng này với chức năng sau được đề xuất trên trang trợ giúp cho hàm is.integer ...
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x-round(x)) < tol
... và tất nhiên, chúng là số nguyên. Vậy tại sao tôi cần nạng "tròn" ở đây? Rất khó hiểu ... Ai đó đã có một ý tưởng những gì đang xảy ra trong nền?
'2614 * 1456000' là ** không ** số nguyên ... '> lớp (1.456.000) [1] "số" > lớp (1456000L) [1] "số nguyên"' – Michele
@Michele cảm ơn, Tôi đã cập nhật câu trả lời của tôi một chút vì nhận xét này. –