我是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.table
或read.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时,他们再次获得这些元字符会导致这些问题。