Daha uzun bir komut dosyasında, bir A (2614) uzunluğunun bir veri çerçevesinin B (1456000) satır sayısı ile çarpması gerekiyor.R: basit çarpım, tamsayı taşmasına neden oluyor
2614 * 1456000
[1] 3805984000
işe çarpma almak için tek yol round(length(A)) * nrow(B)
veya length(A) * round(nrow(B))
: Ben length(A) * nrow(B)
o doğrudan yaparsanız ben aynı numaraları çarpın zaman hiçbir sorun olmamasına rağmen ben mesajı NAs produced by integer overflow
olsun. Ancak length
ve nrow
tarafından üretilen sayılar her zaman tamsayı olmalıdır! Üstelik ben ... fonksiyon is.integer yardım sayfasındaki önerilen aşağıdaki işlevi ile
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x-round(x)) < tol
bu test ... ve tabii ki, bunlar tam sayılardır. O zaman neden burada "yuvarlak" koltuk değneklerine ihtiyacım var? Çok kafa karıştırıcı ... Birinin arka planda neler olduğuna dair bir fikri var mı? işlenenler hem aslında sınıfın
numeric
vardır çünkü
'2614 * 1456000' olan ** değil ** tamsayıdır ...'> sınıfı (1.456.000) [1] "sayısal" > sınıfı (1456000L) [1] "tam sayı" ' – Michele
sayesinde @Michele, Bu yorum nedeniyle cevabımı biraz güncelledim. –