R baskı çıkış ondalık basamak kontrol numarası
Basamaklı ekran üzerinde kontrol almak için R bir seçenek var. Örneğin:
options(digits=10)
hesaplama vermesi beklenen R seans sonuna kadar 10 basamaklı olur. Ar-Yardım dosyası, basamak tanımı aşağıdaki gibidir: parametre
basamak: basamak sayısını denetler sayısal değerleri yazdırırken. Bir öneri sadece. Geçerli değerler 1...22varsayılan7
Yani, bu sadece bir öneri olduğunu söylüyor. Ne zaman 10 basamak görüntülemek için seviyorum, daha fazla veya daha az değil?
İkinci sorum, eğer fazla 22 basamak görüntülemek için sevdiğim ne varsa, yani 100 basamak gibi daha hassas hesaplamalar için? Temel R ile mümkün, ya da ek bir paket lazım/o fonksiyonu?
Düzenleme:Jmoy öneri için teşekkürler, denedim sprintf("%.100f",pi)
verdim
[1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000"
48 ondalık vardır. Bu sınır R işleyebileceği en büyük olur? Aslında pi ondalık sonsuz bir numarası vardır.
CEVAP
Sadece bir öneri bu yüzden kolayca seçenekleri değerini göz ardı ettiği bir yazdırma işlevi yazabilirsiniz oldukça. Bu yerleşik baskı ve biçimlendirme işlevleri varsayılan olarak options
değeri kullanın.
R sonlu hassas aritmetik kullandığından ikinci soruna gelince, cevaplarınız 15 veya 16 ondalık, böylece genel olarak, daha fazla gerekli değil mi ötesine doğru değil. gmp rcdd paket anlaşma ile birden çok hassas aritmetik () bir interace gmp Kütüphanesi), ama bu çoğunlukla ilgili büyük tamsayı yerine ondalık basamak için iki katına çıkar.
Mathematica (ve muhtemelen Maple) senin gönlünün istediği kadar ondalık basamak için olanak sağlar.
DÜZENLEME:
Ondalık ve anlamlı sayılar arasındaki farkı düşünmek faydalı olabilir. Eğer 15 önemli bir rakam ötesinde farklılıklar kullanan istatistiksel testleri yapmak, analiz neredeyse kesinlikle önemsiz.
Eğer sadece çok küçük sayılar ile ilgili olmadığını, diğer taraftan, bu R sayısı .Machine$double.xmin
(genellikle 2e-308) gibi küçük işleyebilir, çünkü bu bir sorun daha az.
Bu iki analiz karşılaştırın.
x1 <- rnorm(50, 1, 1e-15)
y1 <- rnorm(50, 1 1e-15, 1e-15)
t.test(x1, y1) #Should throw an error
x2 <- rnorm(50, 0, 1e-15)
y2 <- rnorm(50, 1e-15, 1e-15)
t.test(x2, y2) #ok
İlk durumda, sayılar arasındaki farklar çok anlamlı rakamlar, veriler sonra meydana "neredeyse sabit". Sayılar arasındaki farklar boyutu aynı, sayıları kendileri büyüklüğü ile karşılaştırıldığında, Ancak ikinci durumda, büyük.
E3bo, çok hassas kullanabilirsiniz kayan nokta sayı Rmpfr
paketi kullanarak belirtildiği gibi.
mpfr("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825")
Bu daha yavaş ve daha düzenli bellek (çift duyarlıklı) numeric
vektörler kullanımı daha yoğun, ama eğer kötü donatılmış bir sorun veya kararsız algoritma varsa, bu yararlı olabilir.
# - c Nasıl 2 ondalık basamak (bir say...
Eğer süreç numarası (PID) olup olmadığ...
Birkaç komutları etkin bir şekilde kon...
Nasıl her zaman 2 ondalık basamak göst...
Sayı biçimi için her zaman 2 ondalık b...