2009-09-10 30 views
17

Tôi có một tập tin văn bản với một cột idname, và tôi đang cố gắng để đọc nó vào một khung dữ liệu trong R:tập tin văn bản Reading sử dụng read.table

d = read.table("foobar.txt", sep="\t") 

Nhưng đối với một số lý do, một rất nhiều dòng được sáp nhập - ví dụ, trong hàng 500 của khung dữ liệu của tôi, tôi sẽ thấy một cái gì đó giống như

row 500: 500 Bob\n501\tChris\n502\tGrace 

[Vì vậy, nếu file văn bản ban đầu của tôi có, nói, 5000 dòng, kích thước của bàn của tôi sẽ chỉ kết thúc là 1000 hàng và 2 cột.]

Tôi đã có điều này xảy ra với tôi khá một vài lần. Có ai biết vấn đề là gì không, hoặc cách khắc phục?

+0

Vui lòng cung cấp tệp (hoặc các bộ phận của chúng) vì không rõ bạn đã làm gì sai. –

+0

Từ một cái nhìn thoáng qua về lỗi của bạn, ít nhất một vấn đề có thể là '500' và' Bob' không được phân tách bằng tab. –

Trả lời

28

Từ ?read.table: Số lượng cột dữ liệu được xác định bằng cách xem năm dòng đầu vào đầu tiên (hoặc toàn bộ tệp nếu có ít hơn năm dòng) hoặc từ độ dài của các tên nếu nó được chỉ định và dài hơn. Điều này có thể tưởng tượng sai nếu điền hoặc blank.lines.skip là đúng, vì vậy hãy chỉ định col.names nếu cần.

Vì vậy, có lẽ tệp dữ liệu của bạn không sạch. Cụ thể hơn sẽ giúp nhập dữ liệu:

d = read.table("foobar.txt", 
       sep="\t", 
       col.names=c("id", "name"), 
       fill=FALSE, 
       strip.white=TRUE) 

sẽ chỉ định cột chính xác và fill=FALSE sẽ buộc khung dữ liệu hai cột.

+1

hi .. là nó có thể đọc các tập tin văn bản không có cấu trúc? –

+0

Tôi nghĩ bạn đã quên tên tham số đầu tiên: '(file =" footer.txt ", ...)' – iTurki

+3

@JayNirgudkar Hãy xem 'scan' và 'readLines'. – lmo

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