SORU
10 AĞUSTOS 2011, ÇARŞAMBA


Ne'In arasındaki fark `1L` ve `1`?

Ben sık sık 1L (ya da 2L, 3L vb.) R kodu görünür sembolü gördüm. Fark 1L 1 arasında ne? 1==1L TRUE olarak değerlendirir. Neden 1L R kod kullanılır?

CEVAP
10 AĞUSTOS 2011, ÇARŞAMBA


, @@Brian açıkladı Jamesne3 l lik anlamına gelir. Amanedenonu kullanır mıydın?

Çoğu zaman hiç fark etmez - ama bazen kodunuzu almak için kullanabilirsinizdaha hızlı koşmakve tüketirdaha az bellek. ("") Sayısal vektör elemanı başına 8 bayt kullanır. bir çift Tamsayı bir vektör elemanı başına sadece 4 bayt kullanır. Daha büyük vektörler için harcanan bellek ve CPU için wade için daha az genellikle daha hızlı).

Çoğunlukla bu endeksleri ile çalışırken de geçerlidir. Burada bir tamsayı vektör ekleme 1 çift bir vektör haline döndüğü bir örnek:

x <- 1:100
typeof(x) # integer

y <- x 1
typeof(y) # double, twice the memory size
object.size(y) # 840 bytes (on win64) 

z <- x 1L
typeof(z) # still integer
object.size(z) # 440 bytes (on win64) 

...ama aynı zamanda aşırı tamsayılar ile çalışmak tehlikeli olabilir unutmayın:

1e9L * 2L # Works fine; fast lean and mean!
1e9L * 4L # Ooops, overflow!

...ve @Gavin çekti, tam sayı aralığı kabaca-2e9 2e9.

Bir uyarı olsa da bu akım R sürümü (2.13) için geçerlidir. R bir noktada bu uzunluk ^ vektörler sağlayabilir. (64-bit tamsayı tatlı olurdu, değişebilir 2e9). Güvenli olması için, en büyük tamsayı değeri (ve en az o inkar) ne zaman ihtiyacın olursa .Machine$integer.max kullanmalısınız.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • friendz.net

    friendz.net

    29 EKİM 2010
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007