2012-03-20 38 views
4

我有一个数据文件,#符号作为分隔符,我想用read.file命令阅读。使用'#'作为分隔符时,Read.table不起作用?

首先;这是一个大的数据文件,我不想改变分隔符,因为:

  1. 使用已经在数据存在(注意不同的分隔符的风险:可以检查,但2点使这一点稍微复杂一点)
  2. 我希望有更多的所有#的符号分隔这些数据文件的,所以我不希望更改数据文件每次当我想读再次将这些文件
时间

所以我想我可以使用read.file命令的sep参数。但它没有按照我的预期为#签字。只读取第一列。我尝试了一些不同的分隔符,除了#符号之外,所有分隔符都工作正常。请参阅下面的一些示例,其中包括#分隔符。

文件看起来像:

H1#H2#H3 
a#b#c 
d#e#f 

守则R,进行包括结果,对于同一个文件,其中我改变了分隔符。对于=|@$它工作得很好,但不适合# ...

> read.table(file='test_data.dat', check.names=F, sep='=', header=T) 
H1 H2 H3 
1 a b c 
2 d e f 
> read.table(file='test_data.dat', check.names=F, sep='|', header=T) 
H1 H2 H3 
1 a b c 
2 d e f  
> read.table(file='test_data.dat', check.names=F, sep='@', header=T) 
H1 H2 H3 
1 a b c 
2 d e f 
> read.table(file='test_data.dat', check.names=F, sep='$', header=T) 
H1 H2 H3 
1 a b c 
2 d e f 
> read.table(file='test_data.dat', check.names=F, sep='#', header=T) 
H1 
1 a 
2 d 

任何人可以帮我在这? 这是一个已知的'错误'吗?有没有解决方法?

在此先感谢您的帮助!

回答

8

注释字符也#,所以你需要像:

read.table(file='tmp.txt', check.names=FALSE, sep='#', 
      header=TRUE, comment.char="@") 
+0

谢谢!它的工作原理......但我仍然需要注意新定义的注释字符未在文件中使用:)(尽管它改变了文件要好得多) – FBE 2012-03-20 15:26:39

+0

您也可以将'comment.char'设置为空(' “”')。 – 2012-03-20 17:00:18

+0

@FBE:真的,但通常人们对他的数据文件有一点了解,并且可以很好地猜测unicode序列的哪个部分永远不会在文件中:-)。 – 2012-03-20 17:22:42

相关问题