2014-02-14 71 views
1

這很煩人,我無法理解什麼是錯的?read.table row.names&col.names錯誤

這是我的.csv文件:

  D102-A1 D102-A2 
A1BG  0.32 0.39 
A1BG-AS1 0.08 0.14 

實際看:
; D102-A1; D102-A2
A1BG; 0.32; 0.39
A1BG-AS1; 0.08; 0.14

這是我的代碼:

x <- read.table(file = "file.csv", sep = ";", header = TRUE, col.names = 1) 

這給了這些錯誤:

更多的列比列名 此外:警告消息: 頭和「col.names」是不同的長度

第一行作爲左上角空單元格的,如果不是這種報頭? 當我有一個標題時,爲什麼我不能將第1列設置爲row.names?

謝謝!

+2

csv文件具有逗號分隔值(CSV),您的代碼建議分隔符是分號。 – PyNEwbie

+0

如果分隔符正確,它應該是row.names而不是col.names – Ananta

+1

@PyNEwbie:分號常用於csv文件,逗號用於小數點。 –

回答

1

我不確定,因爲我從來沒有使用R,但我正在查看手冊頁http://cran.r-project.org/doc/manuals/R-intro.html#The-read_002etable_0028_0029-function,它表明如果沒有行標籤,您需要所有數據列的列標題。

你嘗試過:

read.table(file = "file.csv", sep = ";") 

,然後看了看結果?

這讓我覺得你需要無colnames選項

直接讀取整個數據幀進行測試,外部文件通常有一種特殊形式。

該文件的第一行應該爲數據框中的每個變量指定一個名稱。

該文件的每一行都有第一個項目的行標籤和每個變量的值。

我試圖做的一點是,該注意事項表明,如果沒有第一列的列名稱,程序就難以解釋數據。如果沒有列標題,數據將如何命名?

0

?read.table起,可選參數col.names是該列名稱的向量。因此,通過指定col.names = 1,您是說有一個列名稱爲1

爲了解決這個問題,你可以刪除col.names參數

test1 <- ";D102-A1;D102-A2 
A1BG;0.32;0.39 
A1BG-AS1;0.08;0.14" 
tf <- tempfile() 
writeLines(test1, tf) 

x <- read.table(tf, sep=";", header=TRUE) 

然而,這給你留下一個X作爲第一個「細胞」列名。如果這是可以接受的,那麼你可以堅持下去;但如果不是這樣,您的數據可能需要再次融化或修改,但爲了向您提出建議,我們需要知道您希望生成的數據幀。