2011-12-28 35 views
5

Tôi đang cố gắng tự động hóa việc đọc trong các tệp được tạo từ một chương trình phân tích khác.Bạn có thể chỉ định số cột trong read.table không?

Đầu ra tiêu chuẩn thường là trong 6 cột được phân tách bằng dấu cách có dấu xuống dòng ở cuối. Điều này đọc độc đáo bằng cách sử dụng "strip.white = TRUE" trong "read.table".

Tôi đang gặp sự cố, tuy nhiên, b/c chú thích được thêm vào một dòng nếu tham số được cố định dưới dạng hằng số.
Thêm "tuôn ra = TRUE" cho phép tôi bỏ qua những ý kiến ​​thường xuyên và đọc tất cả mọi thứ trong.

Những gì tôi muốn làm là có những ý kiến, mà chỉ có thể xảy ra một lần trong một tập tin nào đó, được thêm vào như một cột thứ 7.

Có phương pháp tiếp cận đọc cho phép tôi chỉ định số lượng cột hoặc một số cách khác là phù hợp với cột thứ 7 này không?

Một đoạn dữ liệu có thể được tìm thấy here

Các dữ liệu giống như thế này:

columns_1&2 column_3 column_4 column_6 column_6 column_7  
84:S 0:dorm 1.0000000 0.11E-005 0.9999979 1.0000021       
85:p N:veg 1.0000000 0.0000000 1.0000000 1.0000000 Fixed    
86:p 0:dorm 0.260E-08 0.237E-05 -0.03E-05 0.46E-005 

Trả lời

9

Nếu tất cả các cột của bạn đang như sắp xếp gọn gàng như trong ví dụ liên kết (tức là nếu nó là một "cố định chiều rộng tập tin"), thì đây là một công việc cho read.fwf():

df <- read.fwf(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
       widths = c(8, 7, 29, 15, 16, 16,1000)) 

head(df,4) 
     V1  V2 V3   V4  V5  V6   V7 
1 82:S 0:dorm 1 1.625420e-06 0.9999968 1.000003      
2 83:S 0:dorm 1 1.083245e-06 0.9999979 1.000002      
3 84:S 0:dorm 1 1.081771e-06 0.9999979 1.000002      
4 85:p N:veg 1 0.000000e+00 1.0000000 1.000000 Fixed 

EDIT: Ngoài ra, như J oran chỉ ra trong các ý kiến, bạn có thể sử dụng read.table() với các tùy chọn fill=TRUE:

df2 <- read.table(file = "http://dl.dropbox.com/u/54791824/SO_data_frag.txt", 
        fill = TRUE, 
        col.names=paste("column", 1:7, sep="_") 
+3

@NBrouwer Tôi nghĩ bạn cũng có thể thiết lập 'điền = TRUE' và chỉ định tên cột trực tiếp sử dụng 'col.names'. – joran

+0

@joran - Cảm ơn bạn đã đề cập đến tùy chọn khác/tốt hơn. Tôi đã đánh dấu nó ở trên. –

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