R 使用'时读取.table#';因为分隔符不起作用?

R 使用'时读取.table#';因为分隔符不起作用?,r,read.table,R,Read.table,我有一个以#符号作为分隔符的数据文件,我想用read.file命令读取该文件 首先,;这是一个大数据文件,我不想更改分隔符,因为: 使用已存在于数据中的不同分隔符的风险(注意:可以检查,但第2点使这一点更复杂) 我希望有更多的数据文件使用所有的#符号作为分隔符,所以我不想每次想再次读取这些文件时都更改数据文件 因此我假设我可以使用read.file命令的sep参数。但是对于#符号,它并没有像我预期的那样起作用。只读取第一列。我尝试了一些不同的分隔符,除了#符号外,所有分隔符都很好。请参见下面的一

我有一个以
#
符号作为分隔符的数据文件,我想用
read.file
命令读取该文件

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

  • 使用已存在于数据中的不同分隔符的风险(注意:可以检查,但第2点使这一点更复杂)
  • 我希望有更多的数据文件使用所有的
    #
    符号作为分隔符,所以我不想每次想再次读取这些文件时都更改数据文件
  • 因此我假设我可以使用
    read.file
    命令的
    sep
    参数。但是对于
    #
    符号,它并没有像我预期的那样起作用。只读取第一列。我尝试了一些不同的分隔符,除了
    #
    符号外,所有分隔符都很好。请参见下面的一些示例,包括
    #
    分隔符

    该文件看起来像:

    H1#H2#H3
    a#b#c
    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 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
    
    有人能帮我吗? 这是已知的“bug”吗?有解决办法吗


    提前感谢您的帮助

    注释字符也是
    #
    ,因此您需要如下内容:

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

    谢谢它是有效的。。。但是我仍然要注意新定义的注释字符没有在文件中使用:)(尽管这比更改文件要好得多),您也可以将
    comment.char
    设置为空白(
    )。@FBE:true,但通常情况下,人们对自己的数据文件知之甚少,并且可以公平地猜测unicode序列的哪一部分从不在文件中:-)。