2015-10-20 59 views
0

當「X」我有此.csv文件在我的電腦,並且當我導入成R用下面的代碼行:附加(不想要的)在報頭中導入的.csv成R

dat <- read.table(file.choose(),sep=',', header=T) 

我得到:

X COC EG EE AC LE ME SC 
1 CE 3 22 0 0 4 3 50 
2 AU 21 7 1 0 0 0 15 
3 WA 4 0 10 0 12 0 21 
4 HH 0 12 5 0 2 1 8 
5 MH 0 2 0 2 2 0 26 
6 HA 8 7 3 0 1 0 8 
7 TY 0 0 0 0 0 0 1 
8 PK 3 0 0 0 0 0 2 
9 SR 0 1 0 0 0 0 1 
10 FU 0 0 0 0 0 0 2 

這個如果很好,除了在行名稱頂部的「X」。有原稿上沒有X:

,COC,EG,EE,AC,LE,ME,SC 
CE,3,22,0,0,4,3,50 
AU,21,7,1,0,0,0,15 
WA,4,0,10,0,12,0,21 
HH,0,12,5,0,2,1,8 
MH,0,2,0,2,2,0,26 
HA,8,7,3,0,1,0,8 
TY,0,0,0,0,0,0,1 
PK,3,0,0,0,0,0,2 
SR,0,1,0,0,0,0,1 
FU,0,0,0,0,0,0,2 

我怎樣才能防止這種「X」被自動產生的?

編輯:經過下面的評論我試了dat <- read.table(file.choose(),sep=',', header=T, check.names=F),現在顯示,如果完美。

然而,事情是非常錯誤的(正如評論中所建議的)。所以,如果我做了

str(dat) 
'data.frame': 10 obs. of 8 variables 

當它應該閱讀10 obs. of 7 variables

我不明白這一點,因爲如果我刷新我的記憶有:

head(mtcars) 
        mpg cyl disp hp drat wt qsec vs am gear carb 
Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 

...顯然存在一個空細胞在排名開始之前...

+3

在原始文檔中添加一個?列名不能爲空。 – Heroka

+1

如果列名以數字元素開頭或缺失,則會添加'X'。如果你不需要,'check.names = FALSE'是一個選項。雖然我不確定在列名錯誤的情況下會發生什麼情況。 – akrun

+1

嚴格來說,列名_can_爲空,(使用'check.names = FALSE'),但是這使得列很難以任何有意義的方式使用,但也許''dat [[1]]',我wouldn'建議定期做這件事。 – Benjamin

回答

0

這個功勞歸於@Richard Erickson(見評論)。感謝其他人。我在這裏發帖,以方便日後搜索同一個問題:

read.table(file.choose(), row.names = 1, header=T, sep=",")

COC EG EE AC LE ME SC 
CE 3 22 0 0 4 3 50 
AU 21 7 1 0 0 0 15 
WA 4 0 10 0 12 0 21 
HH 0 12 5 0 2 1 8 
MH 0 2 0 2 2 0 26 
HA 8 7 3 0 1 0 8 
TY 0 0 0 0 0 0 1 
PK 3 0 0 0 0 0 2 
SR 0 1 0 0 0 0 1 
FU 0 0 0 0 0 0 2 

而且......

str(dat) 
'data.frame': 10 obs. of 7 variables: 
$ COC: int 3 21 4 0 0 8 0 3 0 0 
$ EG : int 22 7 0 12 2 7 0 0 1 0 
$ EE : int 0 1 10 5 0 3 0 0 0 0 
$ AC : int 0 0 0 0 2 0 0 0 0 0 
$ LE : int 4 0 12 2 2 1 0 0 0 0 
$ ME : int 3 0 0 1 0 0 0 0 0 0 
$ SC : int 50 15 21 8 26 8 1 2 1 2 

所以我想,這個問題是不是列,但而是需要指定的行名稱。