使用'#'作为分隔符时,Read.table不起作用?

时间:2012-03-20 15:01:23

标签: r read.table

我有一个数据文件,其中#符号作为分隔符,我想用read.file命令阅读。

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

  1. 使用数据中已存在的不同分隔符的风险(注意:可以检查,但第2点会使这有点复杂)
  2. 我希望更多这些数据文件的所有#符号都是分隔符,所以每次我想再次阅读这些文件时,我都不想更改数据文件
  3. 所以我假设我可以使用sep命令的read.file参数。但正如我预期的那样,#符号并没有成功。只读取第一列。我尝试了一些不同的分隔符,除了#符号外,一切正常。请参阅下面的一些示例,包括#分隔符。

    该文件如下:

    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
    

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

    提前感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

评论字符也是#,因此您需要以下内容:

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