Vừa có cuộc trò chuyện với đồng nghiệp về điều này, và chúng tôi nghĩ rằng nó đáng để xem những gì mọi người trong SO đất phải nói. Giả sử tôi có một danh sách với các phần tử N, trong đó mỗi phần tử là một vectơ có độ dài X. Bây giờ giả sử tôi muốn biến đổi nó thành một tệp dữ liệu. Như với hầu hết mọi thứ trong R, có nhiều cách để lột da mèo, chẳng hạn như as.dataframe
, sử dụng gói plyr, kết hợp do.call
với cbind
, phân bổ trước DF và điền vào, và các cách khác.Danh sách hiệu quả nhất cho phương pháp data.frame?
Vấn đề được trình bày là những gì xảy ra khi N hoặc X (trong trường hợp của chúng tôi là X) trở nên cực kỳ lớn. Có một phương pháp làm da mèo nào đáng chú ý hơn khi hiệu quả (đặc biệt là về mặt bộ nhớ) là của bản chất?
Để lại "có lẽ" ra khỏi câu trả lời và nó đúng. Nó cũng đúng nếu bạn thực hiện một hàm bằng cách sử dụng các cuộc gọi đó và thay thế cheat của việc biết n bằng lệnh chiều dài. Hàm mới của bạn tương đương với data.frame() sau khi xóa tất cả các kiểm tra mở rộng. Vì vậy, nếu bạn biết chắc chắn bạn đang giao cuộc gọi đầu vào phù hợp thì chỉ cần làm những gì Josh đề nghị cho tốc độ. Nếu bạn không chắc chắn thì data.frame an toàn hơn và do.call (data.frame, x)) là nhanh nhất tiếp theo (đủ kỳ quặc). – John
Xem 'plyr :: quickdf' để biết chính xác chức năng này. – hadley
@hadley: 'plyr :: quickdf' không cung cấp chính xác chức năng này; cụ thể là nó không tạo tên cột duy nhất. 'plyr ::: make_names' chỉ thay thế các tên còn thiếu và không có' unique = 'arg như' base :: make.names'. –