【发布时间】:2016-01-19 04:50:14
【问题描述】:
我的计算机中有这个 .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”?
编辑:在下面的 cmets 之后,我尝试了 dat <- read.table(file.choose(),sep=',', header=T, check.names=F),现在显示完美。
但是,事情大错特错(正如 cmets 中所建议的那样)。所以如果我做一个
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
...在行名开始之前显然有一个空单元格...
【问题讨论】:
-
在原始文档中添加一个?列名不能为空。
-
如果列名以数字元素开头或缺失,则添加
X。如果您不需要,check.names=FALSE是一个选项。虽然我不确定如果缺少列名会发生什么。 -
严格来说,列名可以为空,(使用
check.names=FALSE),但这使得该列很难以任何有意义的方式使用,但也许dat[[1]],我不建议定期这样做。 -
请显示实际文件内容的第一行。我怀疑您的第一列实际上是行名。这意味着您应该将不同的参数传递给
read.table。如果您只使用read.csv可能就足够了。 -
查看这篇关于行名的帖子stackoverflow.com/questions/13271820/…