read.csv从第一列计数,read.table和read.delim计数从第二列?

时间:2013-09-16 09:32:52

标签: r csv read.table

我是R的全新人物。 我有几个脚本从.cvs文件读取数据来绘制它们。他们阅读完整的表并绘制特定列中的数据(例如第6列):

tablecsv <- read.csv("myfile.csv", header=TRUE)
plot.values_csv <- tablecsv[,6]

然后我将其更改为从标签分隔文件中读取数据(使用read.delim和/或read.table)。

tabletab <- read.delim("myfile.tab", header=TRUE, sep="\t")
plot.values_tab <-tabletab[,6]

奇怪的是,现在colums的编号已经改变了。 “tabletab”中的第6列始终对应于“tablecsv”中的第7列。 “tabletab”中的第1列对应于“tablecsv”中的第2列。因此,通过使用read.tableread.delim,输入文件中的第一列将被忽略或解释为注释。我似乎无法用任何参数关闭它。我尝试设置skip = 0,但这并没有改变任何东西,无论如何都是默认参数。此外,第一列不包含#字符,这是我理解的默认评论符号。

是否有人对此行为有解释? (我知道通过更改脚本中的列号来解决这个问题并不困难。只是这种行为对我来说没有意义。)

编辑: 以下是.csv和.tab输入文件的前几行:

myfile.csv:

name,A,B,C,D,E,F,G,H,I,J,K
xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_-,0.242718447,0.35483871,0.166666667,0.2,0.368932039,0.451612903,0.333333333,0.418604651,0.333333333,0.763109267,0.711142183
xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+,0.152317881,0.1875,0.214285714,0.120879121,0.231788079,0.25,0.464285714,0.35,0.153846154,0.635002306,0.612372436

myfile.tab:

name    A   B   C   D   E   F   G   H   I   J   K
xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.242718447 0.35483871  0.166666667 0.2 0.368932039 0.451612903 0.333333333 0.418604651 0.333333333 0.763109267 0.711142183
xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.152317881 0.1875  0.214285714 0.120879121 0.231788079 0.25    0.464285714 0.35    0.153846154 0.635002306 0.612372436

EDIT2: 这就是我的tabletab现在的样子:

    > tabletab1[1:3,]
                                               name         A          B
  1     xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871
  2     xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.1523179 0.18750000
  3     xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667
            C         D         E         F         G         H         I
  1 0.1666667 0.2000000 0.3689320 0.4516129 0.3333333 0.4186047 0.3333333
  2 0.2142857 0.1208791 0.2317881 0.2500000 0.4642857 0.3500000 0.1538462
  3 0.1000000 0.1518987 0.2403101 0.1333333 0.3000000 0.2000000 0.2658228
            J         K
  1 0.7631093 0.7111422
  2 0.6350023 0.6123724
  3 0.7236342 0.5617433

>   tablecsv1[1:3,]
                                             name         A          B
1     xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871
2     xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_+ 0.1523179 0.18750000
3     xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667
          C         D         E         F         G         H         I
1 0.1666667 0.2000000 0.3689320 0.4516129 0.3333333 0.4186047 0.3333333
2 0.2142857 0.1208791 0.2317881 0.2500000 0.4642857 0.3500000 0.1538462
3 0.1000000 0.1518987 0.2403101 0.1333333 0.3000000 0.2000000 0.2658228
          J         K
1 0.7631093 0.7111422
2 0.6350023 0.6123724
3 0.7236342 0.5617433

现在似乎没事。然而,这些是我用excel重新保存的输入文件,之后我稍微模糊了样本名称。原始文件的结果如下:

  

tabletab1 [1:3,]                                                           名字A.      xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2427184 0.35483871      xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_ + 0.1523179 0.18750000      xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1240310 0.06666667                                                   乙      xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.1666667      xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_ + 0.2142857      xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1000000                                                   C      xxx_NODE_25653_yyy_272_zzz_2.529412_1_312_- 0.2000000      xxx_NODE_22738_yyy_415_zzz_2.453012_1_455_ + 0.1208791      xxx_NODE_52133_yyy_348_zzz_3.123563_1_388_- 0.1518987

所以“name”列包含在每个其他列中。 包含的这些文件是使用在unix下运行的java程序生成的,它似乎使用“\ t”和“\ n”的其他元字符(在文本编辑器中看不到这个) 所以问题解决了,我猜,但是因为我在unix机器上运行java程序,并且在unix机器上运行R如果发现奇怪的是我在Windows操作系统上使用Excel重新保存它们后表格更好吗?此外,当我在任何表上运行Dos2Unix时,他们再次获得这些元字符会导致这些问题。

0 个答案:

没有答案