2014-03-04 155 views
12

發現我有一個CSV當我嘗試read.csv()這個文件,我得到警告的警告消息:函數read.table在():不完全的最後一行readTableHeader

In read.table(file = file, header = header, sep = sep, quote = quote, : 
    incomplete final line found by readTableHeader on ... 

我不能找出問題所在,儘管淘洗StackOverflow和R-for解決方案。

這是Dropbox的鏈接數據:https://www.dropbox.com/s/h0fp0hmnjaca9ff/PING%20CONCOURS%20DONNES.csv

+5

這只是一個警告,所以你不必擔心它。如果在文件末尾添加空白行,它會消失 –

+0

是的,它的工作原理感謝 – user3351370

回答

0

這不是一個CSV文件,每一行是一個列,您可以手動解析它,例如:

file <- '~/Downloads/PING CONCOURS DONNES.csv' 
lines <- readLines(file) 
columns <- strsplit(lines, ';') 
headers <- sapply(columns, '[[', 1) 
data <- lapply(columns, '[', -1) 
df <- do.call(cbind, data) 
colnames(df) <- headers 
print(head(df)) 

注意,你可以忽略警告,因爲最後一個行結束丟失。

+0

感謝您的幫助 爲什麼它不是csv文件? – user3351370

+0

我們通常稱爲CSV文件的表格每行有一行。在這裏你每列有一行。 –

14

Hendrik Pon所述,該消息指示文件的最後一行不是以行尾(EOL)字符(換行符(\ n)或回車+換行符(\ r \ n))結尾) 。

補救方法很簡單:

  • 打開文件
  • 導航到該文件
  • 將光標移到該行
  • 按回車結束的最後一行/輸入
  • 保存文件

所以這裏是你的文件沒有華rning

df=read.table("C:\\Users\\Administrator\\Desktop\\tp.csv",header=F,sep=";") 
df 
    V1    V2    V3    V4    V5    V6    V7    V8    V9    V10 
1 Date 20/12/2013 09:04 20/12/2013 09:08 20/12/2013 09:12 20/12/2013 09:16 20/12/2013 09:20 20/12/2013 09:24 20/12/2013 09:28 20/12/2013 09:32 20/12/2013 09:36 
2 1   1,3631   1,3632   1,3634   1,3633   1,363   1,3632   1,3632   1,3632   1,3629 
3 2   0,83407   0,83408   0,83415   0,83416   0,83404   0,83386   0,83407   0,83438   0,83472 
4 3   142,35   142,38   142,41   142,4   142,41   142,42   142,39   142,42   142,4 
5 4   1,2263   1,22635   1,22628   1,22618   1,22614   1,22609   1,22624   1,22643   1,2265 

但我認爲你不應該以這種方式讀取,因爲你不得不再次重塑數據幀,謝謝。

2

我在記事本中創建數據矩陣時遇到了同樣的問題。 所以我來到數據矩陣的最後一行並按下回車鍵。現在我有一個「n」行數據矩陣和一個新的空白行,光標位於「n + 1」行的開頭。 問題解決了。

1

我對.xls文件有同樣的問題。 我的解決方案是將該文件保存爲製表符分隔的.txt文件。然後,您也可以手動將.txt擴展名更改爲.xls,然後您可以使用read.delim打開數據框。

無論如何,這是非常粗魯的方式來克服這個問題。

相關問題