0

次の情報を含む test2.txt というファイルを作成しました。

col1 col2 col3 col4
1    A    B 
2    A    B 
3    A    B 
4    A    B 
5    A    B 
6    A    B 
7    A         C
8    A         C

次のコマンドで読み取る場合:

test.ws=read.table(paste(inputDir,'test2.txt',sep=''),fill=T,header=T)

私は以下を取得します:

  col1 col2 col3 col4
1    1    A    B   NA
2    2    A    B   NA
3    3    A    B   NA
4    4    A    B   NA
5    5    A    B   NA
6    6    A    B   NA
7    7    A    C   NA
8    8    A    C   NA

列が左にシフトされます。何が得られる?!

私は次のことを試しました:

> count.fields(paste(inputDir,'test.txt',sep=''))
[1] 4 3 3 3 3 3 3 4 4

そして、タブの数が違うと言っていますが、そうではありません! この情報をどうすればよいですか?この .txt ファイルを Excel にインポートすると、タブが正しく読み取られ、列がスキップまたはシフトされないことに注意してください。

列名を個別に割り当ててこれを実行しようとしましたが、うまくいきませんでした:

colNames=names(test.ws)
test.ws=read.table(paste(inputDir,'test2.txt',sep=''),skip=1,fill=T,header=T,col.names=colNames)

収量:

Warning message:
In read.table(paste(inputDir, "test2.txt", sep = ""), skip = 1,  :
  header and 'col.names' are of different lengths

同様の問題をオンラインで見つけました: https://stat.ethz.ch/pipermail/r-help/2008-July/166676.html。その質問には答えられませんでした。

4

2 に答える 2

6

それがタブ区切りのデータである場合は、それに応じてセパレーターを設定します: sep="\t". それ以外の場合 ( のヘルプからread.table)

sep = ""(read.table のデフォルト) 区切り文字が「空白」である場合、それは 1 つ以上のスペース、タブ、改行、またはキャリッジ リターンです。

そのため、複数の連続するタブは 1 つの区切り文字として扱われます。

または、タブ区切りデータにより適したデフォルトがあるため、read.delim代わりに使用します。read.table

于 2013-04-05T16:26:13.690 に答える