2012-03-20 37 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

相關問題