使用read.csv2读取时获取正确的行和列名

使用read.csv2读取时获取正确的行和列名,r,csv,import-from-csv,R,Csv,Import From Csv,我有以下CSV文件: ;A;C;D;E;F;G;H;I;K;L;M;N;P;Q;R;S;T;V;W;X;Y Position1;0,054213776;0,003005945;0,027905128;0,00375423;0,290228233;0,064954976;0,002462278;0,047134442;0,005404894;0,081739388;0,002012803;0,046380669;0,020762236;0,03654459;0,057469835;0,011760

我有以下CSV文件:

;A;C;D;E;F;G;H;I;K;L;M;N;P;Q;R;S;T;V;W;X;Y
Position1;0,054213776;0,003005945;0,027905128;0,00375423;0,290228233;0,064954976;0,002462278;0,047134442;0,005404894;0,081739388;0,002012803;0,046380669;0,020762236;0,03654459;0,057469835;0,011760176;0,002482397;0,026511666;0,108202585;0,011974854;0,058416108
Position2;0,004057157;0,041518985;0,019806132;0,051610208;0,003572703;0,036402843;0,074879075;0,010325334;0,044981263;0,09328763;0,03897166;0,064762246;0,029074767;0,004175355;0,013691361;0,109767515;0,046100376;0,002930728;0,248865169;0;0,028268182
Position3;0,051305224;0,064958634;0,025061506;0,001931642;0,022646096;0,053596034;0,060665537;0,002355053;0,002426384;0,264133805;0,030836312;0,032183821;0,018242803;0,048333116;0,11381004;0,066739613;0,052130556;0,005772064;0,047369009;2,92638E-05;0,033100145
基本上,我的行名是Position1、Position2、Position3,列名是A、B、C…、Y。我使用以下命令将它们加载到R中:

 data<- read.csv2(f, header=TRUE) 
看起来还可以。但是,如果我现在通过
data[1,]
请求列名,我会得到以下结果:

          X          A           C          D          E         F          G           H          I           K          L           M          N          P          Q          R          S           T          V         W        X.1
1 Position1 0.05421378 0.003005945 0.02790513 0.00375423 0.2902282 0.06495498 0.002462278 0.04713444 0.005404894 0.08173939 0.002012803 0.04638067 0.02076224 0.03654459 0.05746983 0.01176018 0.002482397 0.02651167 0.1082026 0.01197485
           Y
1 0.05841611
[1] 0,054213776 0,004057157 0,051305224
Levels: 0,004057157 0,051305224 0,054213776
我不明白。出于某种原因,R认为第一个元素[1,1]应该有一个名称,并使用
X
,而在CSV文件中,第一个元素是空的,即

[1,1]=empty   A   C   D   E..........Y
Position1
Position2
Position3
如何读取R中的CSV文件


编辑:我删除了分号并使用了以下命令:
data在标题行中的a前面有一个分号。我想知道这是否对阅读造成了严重破坏?把它取下来看看。

我想

dat <- read.csv2("csvex.txt",row.names=1)

R
矩阵
data.frame
中的行名和列名不被视为表数据的一部分(即,它们不是数据的第一行和第列),而是作为单独的属性保存,可以使用
colnames(dat)
rownames(dat)
(并且可以使用
rownames(dat)进行设置),因此我删除了A前面的分号,然后使用了上一篇文章中建议的命令:dataNo,rownames via data[,1]我得到以下内容:[1]0054213776 0004057157 0051305224级别:0004057157 0051305224 0054213776,而列名通过数据[1,]也不正确。但比以前更好。您不应该汇总(数据)以查看发生了什么吗?行名(dat)我确实得到了正确的行名。如何获得列名?非常令人震惊的是,
colnames(dat)
(或
names(dat)
,如果表格对象是数据帧而不是矩阵[在本例中是这样];
colnames(dat)
在这两种情况下都可以工作。顺便说一下,
?rownames
会打开一个帮助页面,该页面也会告诉您有关
colnames
。。。
                    A           C           D          E           F           G           H           I           K           L           M           N           P          Q           R           S           T           V           W
Position1 0,054213776 0,003005945 0,027905128 0,00375423 0,290228233 0,064954976 0,002462278 0,047134442 0,005404894 0,081739388 0,002012803 0,046380669 0,020762236 0,03654459 0,057469835 0,011760176 0,002482397 0,026511666 0,108202585
                    X           Y
Position1 0,011974854 0,058416108
dat <- read.csv2("csvex.txt",row.names=1)
rownames(dat)
## [1] "Position1" "Position2" "Position3"
dat[,1]
## [1] 0.054213776 0.004057157 0.051305224
dat["Position1",]
##                    A           C          D  ...
## Position1 0.05421378 0.003005945 0.02790513  ...
dat[1,] ## same as dat["Position1",]