【问题标题】:Read.table while using '#' as delimiter does not work?使用“#”作为分隔符时 Read.table 不起作用?
【发布时间】:2012-03-20 15:01:22
【问题描述】:

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

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

  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

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

提前感谢您的帮助!

【问题讨论】:

    标签: r read.table


    【解决方案1】:

    评论字符也是#,所以你需要这样的东西:

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

    【讨论】:

    • 谢谢!它有效......但我仍然需要注意文件中没有使用新定义的注释字符:)(虽然它比更改文件要好得多)
    • 您也可以将comment.char 设置为空白("")。
    • @FBE:是的,但通常人们对他的数据文件了解一点,并且可以公平地猜测文件中永远不会出现 unicode 序列的哪一部分 :-)。
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多