2013-08-01 29 views
29

Rõ ràng trong câu hỏi cuối cùng của tôi, tôi đã chứng minh sự nhầm lẫn giữa data.framedata.table. Phải thừa nhận rằng, tôi đã không nhận ra có một sự khác biệt. Vì vậy, tôi đọc sự trợ giúp cho mỗi điều khoản, nhưng trong thực tế, hàng ngày, sự khác biệt là gì, các hàm ý và cái gì được sử dụng cho điều đó sẽ giúp hướng dẫn tôi sử dụng phù hợp?Sự khác biệt thực tế giữa data.frame và data.table trong R

+2

-1. Câu hỏi quá rộng. –

+0

@AnandaMahto, cảm ơn, nhưng nó cũng là một cơ hội cho một thiên tài để đến với một câu trả lời toàn diện và succint ... :-) –

+12

@Justin: Các liên kết là hữu ích. Tôi không biết về chúng. Có lẽ bạn có thể thông báo mà không có thái độ. @ Ferdinand.kraft: bình luận thứ hai của bạn tóm tắt vị trí của tôi chính xác. Tất nhiên tôi có thể đọc các trang trợ giúp và hướng dẫn, nhưng nhiều người trong số họ giả định một kiến ​​thức làm việc của ngôn ngữ và đọc như hướng dẫn kỹ thuật cho các kinh nghiệm. Chắc chắn có ai đó trong chúng ta có thể chưng cất những phần thực tế nhất từ ​​khi làm việc với cả 'data.frame' và' data.table' trong nhiều năm. Tôi không muốn tránh việc, chỉ đơn thuần là những người lập trình có kinh nghiệm có thể truyền lại cho chúng ta với ít kinh nghiệm hơn? – remarkableearth

Trả lời

7

Chúng giống nhau. Khung dữ liệu là danh sách các vectơ có độ dài bằng nhau trong khi các bảng dữ liệu (data.table) là một thừa kế của các khung dữ liệu. Do đó các bảng dữ liệu là các khung dữ liệu nhưng các khung dữ liệu không nhất thiết là các bảng dữ liệu. Gói và chức năng của bảng dữ liệu được viết để tăng tốc độ lập chỉ mục, sắp xếp thứ tự các tham gia, gán, nhóm và liệt kê các cột (v.v.).

Xem http://datatable.r-forge.r-project.org/datatable-intro.pdf để biết thêm thông tin.

+2

Chúng chỉ giống nhau về ngoại hình. –

+0

@Ellis, cảm ơn vì liên kết. – remarkableearth

+0

@ Ferdinand.kraft chúng không phải là _similar_ trong hàm? ;) Nhưng tôi đồng ý rằng họ có nhiều sự khác biệt –

47

Trong khi đây là một câu hỏi rộng, nếu ai đó mới đến R điều này có thể gây nhầm lẫn và sự khác biệt có thể bị mất.

Tất cả data.table s cũng là data.frame s. Nói một cách lỏng lẻo, bạn có thể nghĩ về data.tables dưới dạng data.frames với các tính năng bổ sung.

data.frame là một phần của cơ sở R.

data.table là gói mở rộng data.frames. Hai trong số các tính năng đáng chú ý nhất của nó là tốc độ và cú pháp sạch hơn.

Tuy nhiên, đường cú pháp đó khác với cú pháp R chuẩn cho data.frame trong khi khó cho mắt chưa được phân biệt để phân biệt trong nháy mắt. Do đó, nếu bạn đọc một đoạn mã và không có ngữ cảnh nào khác cho biết bạn đang làm việc với data.tables và cố gắng áp dụng mã vào một data.frame nó có thể thất bại hoặc tạo ra các kết quả không mong muốn. (Một giveaway rõ ràng rằng bạn đang làm việc với nhân d.t, bên cạnh những cuộc gọi library/require là sự hiện diện của toán tử gán := mà là duy nhất để dt)

Với tất cả những gì đang được nói, tôi nghĩ rằng rất khó để thực sự đánh giá cao vẻ đẹp của data.table mà không gặp phải những thiếu sót của data.frame. (ví dụ, xem 3 dấu đầu dòng của câu trả lời @ eddi). Nói cách khác, tôi rất khuyên bạn nên học cách làm việc và thao tác data.frames trước rồi chuyển sang data.table s.

26

Một vài sự khác biệt trong ngày của tôi để cuộc sống hàng ngày mà tôi suy nghĩ (không theo thứ tự đặc biệt):

  • không cần phải chỉ định tên data.table hơn và hơn (dẫn đến cú pháp vụng về và những sai lầm ngớ ngẩn) trong biểu (xét theo khía cạnh đôi khi tôi bỏ lỡ TAB-hoàn thành tên)
  • nhanh hơn nhiều và rất trực quan by hoạt động
  • không điên cuồng nhấn Ctrl-C sau khi nhập df, quên lớn df là như thế nào (cũng dẫn đến gần không bao giờ sử dụng head)
  • nhanh hơn và tập tin tốt hơn đọc với fread
  • gói cũng cung cấp một số chức năng tiện ích khác, như %between% hoặc rbindlist mà làm cho cuộc sống tốt hơn
  • nhanh hơn mọi thứ khác, vì rất nhiều data.frame hoạt động sao chép toàn bộ điều không cần thiết
+0

được thăng hạng vì lý do thứ ba ... – eflores89

Các vấn đề liên quan