SORU
29 Kasım 2012, PERŞEMBE


ne veri ile.sen'veri t o çerçeve.tablo

Ben sadece R kullanmaya başladı, ve veri ile karşı karşıya geldi.tablo. Çok zekice buldum.

Çok saf bir soru: verileri göz ardı edebilirim.çerçeve verileri kullanmak için.iki paket arasında sözdizimi karışıklığı önlemek için masa?

CEVAP
29 Kasım 2012, PERŞEMBE


data.table FAQ

SSS 1.8 TAMAM, ne veri görmeye başladım.tablo, ama neden veri geliştirmek vermedi.R Kare? Neden yeni bir paket var mı?

SSS 1.1 vurgular, j [.data.table temelde olduğu gibi [.data.frame j farklı. Hatta bir şey kadar basit DF[,1] birçok paket ve kullanıcı kodu mevcut kod sonu olur. Bu, tasarım gereğidir ve daha fazlası için bu şekilde çalışmak istiyoruz çalışmak için karmaşık sözdizimi. Diğer farkları (SSS da var 2.17).

Ayrıca, data.table data.frame devralır. Bir data.frame de. data.table herhangi bir paketi kabul edilebilir sadece data.frame paket [.data.framekabul eder data.table sözdizimi.

R mümkün olduğunca geliştirmeleri de önerdik. Biri bu R 2.12.0: yeni bir özellik olarak kabul edildi

unique() match() şimdi tüm elemanları CHARSXP küresel önbelleğinde nerede karakter vektörler hızlı ve işaretsiz var kodlama (ASCII). Matthew sayesinde düşündüren gelişmeler için Dowle yol için karma kodu unique.c oluşturulur.

İkinci bir öneri çok olan duplicate.c memcpy kullanmak olmuştur R kopyalar Bu artıracak C'de for döngüsünü daha hızlı bir şekilde veri dahili (13 kez tarafından bazı önlemler). Bu konu üzerinde ar-devel işte : http://tolstoy.newcastle.edu.au/R/e10/devel/10/04/0148.html.

Veri sözdizimi arasında küçük farklar nelerdir 2.17.çerçeve ve veri.tablo?

  • DT[3] 3 satır anlamına gelir, ama DF[3] 3. sütunu ifade eder
  • DT[3,] == DT[3], DF[,3] == DF[3] (biraz karışıklığa yol açacak)
  • Bu nedenle virgül DT isteğe bağlı, ama DF isteğe bağlı değil
  • DT[[3]] == DF[3] == DF[[3]]
  • Tek bir tamsayı ben nerede DT[i,] döner tek bir satır döndüren matrix tek satır alt aksine sadece DF[i,] gibi ama vektör.
  • J tek bir tamsayı olduğu DT[,j,with=FALSE] bir sütun bir veri döndürür.varsayılan olarak, bir vektör döndüren tablosu, DF[,j] aksine
  • DT[,"colA",with=FALSE][[1]] == DF[,"colA"].
  • DT[,colA] == DF[,"colA"]
  • DT[,list(colA)] == DF[,"colA",drop=FALSE]
  • DT[NA] NA 1 satır döndürür, ama DF[NA] DF bir kopyasını boyunca NA döndürür.
  • 32* *Sembol R yazın mantıksal ve bu nedenle [.data.frame tarafından geri dönüştürülüyor. Niyeti wasprobably 34**. [.data.table kolaylık sağlamak için otomatik olarak yapar.
  • DT[c(TRUE,NA,FALSE)] SAHTE NA davranır, ama DF[c(TRUE,NA,FALSE)] satır NA döndürür
    NA her biri için
  • DT[ColA==ColB] DF[!is.na(ColA) & !is.na(ColB) & ColA==ColB,] daha basittir
  • data.frame(list(1:2,"k",1:4)), data.table bir liste oluşturur sütun 3 sütun oluşturur.
  • check.names varsayılan data.frame 44 *ama kolaylık sağlamak için* 47 ** 46*.
  • stringsAsFactors varsayılan data.frame GERÇEK ama verimlilik için data.table, YANLIŞ.
  • Küresel bir dize önbellek R eklenmiş olduğundan, karakterler, öğeleri önbelleğe alınan tek dize ve artık bir var bir işaretçi vardır performans faktörü için coverting yarar.
  • Liste sütun atom vektörler kullanılarak yazdırılan çöktü ", " veri.çerçeve, ama "," veri.sonra sondaki virgül ile tablo 6. madde büyük gömülü nesneleri yanlışlıkla baskı önlemek için.
  • [.data.frame çok sık drop=FALSE ayarlayın. Biz böcek tek bir sütun seçili olduğu kenar durumlarda ortaya çıkabilir ve tüm unutmak, bir vektör döndürdü bir anda yerine tek bir sütun veri.çerçeve. [.data.table bunu yapmak için fırsat aldı tutarlı ve bırak.
  • Ne zaman bir veri.tablo bir veri geçirilir.tablo-habersiz paket, bu paket, bu farklar ile ilgili değil; çok işe yarıyor

Küçük bir uyarı

Belki bazı paketleri bir veri verildiğinde düşüyor kodu kullanın durumlar olacak.çerçeve, ancak, data.table sürekli bu tür sorunları önlemek için muhafaza ediliyor göz önüne alındığında, ortaya çıkabilecek herhangi bir sorun derhal giderilecektir.

Örneğin

  • plyr tarafından gerektiği gibi unname şimdi tekrar çalışıyor::taban::eritmek(). Teşekkürler Raporlama için Christoph Jaeckel. Test eklendi.
  • Bir olarak.veri.çerçeve yöntemi İTime ggplot2 geçebilir yani İTime için eklendi hata vermeden, #1713. Raporlama için Buchinsky Farrel için teşekkürler. Testleri eklendi. İTime eksen etiketleri hala gece yarısı; neden ggplot2 bilmiyoruz tamsayı saniye olarak görüntülenir İTime çağırmak yok gibi.karakter yöntemi. İTime ggplot2 bir yaklaşımdır için POSİXct dönüştürmek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • kimaliz

    kimaliz

    18 Temmuz 2006
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009