fread
hiện chưa có bất kỳ khả năng nào để đọc fixed-width files.
Tôi cũng vậy, thường xuyên gặp phải các tệp được lưu trữ khó chịu như thế này. Vui lòng thêm yêu cầu tính năng trên Github page.
Có thể không phải như vậy trong trường hợp của bạn, nhưng giải pháp của bạn với sed
sẽ không hoạt động trên nhiều FWF mà tôi gặp phải vì không có khoảng cách giữa các cột, ví dụ: bạn sẽ thấy các chuỗi như 00010 thực sự bao gồm 3 trường.
Nếu đó là trường hợp, bạn sẽ cần một cuốn từ điển rộng lĩnh vực, lúc này bạn có nhiều lựa chọn:
read.fwf
trong R
- Viết
fwf
->csv
chương trình (Tôi sử dụng một trong tôi đã viết trong Python
và nó khá nhanh, có thể chia sẻ mã nếu bạn muốn) - về cơ bản là phiên bản tăng cường của phương pháp tiếp cận ban đầu của bạn, để bạn không bao giờ phải xử lý FWF một lần nữa
- Mở nó trong Excel/LibreOffice/etc; có một trình đọc FWF gốc cố gắng (thường kém) để đoán độ rộng của các cột, ít nhất một nửa công việc chỉ định chiều rộng cột cho bạn. Sau đó, bạn có thể lưu nó dưới dạng .csv hoặc bất kỳ từ đó.
Cá nhân tôi gắn bó với tùy chọn thứ hai thường xuyên nhất. read.fwf
không được tối ưu hóa như fread
do đó có thể sẽ chậm. Và nếu bạn đã có rất nhiều (nói 20+) của FWF để đọc, lựa chọn thứ 3 là khá tẻ nhạt.
Nhưng tôi đồng ý sẽ tốt hơn nếu có thứ gì đó như thế này được tích hợp vào fread
.
Làm thế nào về 'df <- read.table ('test.dat', header = T)'? – RHertel