2016-04-25 11 views
0

私は非常に簡単なことをしようとしていて、時間のあることをしています。私はタブ区切りのファイルに格納されている一連のデータを持っています。このタブ区切りファイルには、欠損値があります。タブ区切りの値を持つ列を呼び出そうとすると、間違った列が呼び出されます。私はこれが第三列(私が抽出しようとしているもの)のヘッダー行の後の最初の値が行方不明の列であると考えています。ここに私のデータの一例である(私の実際のデータは36000行ですが、すべて同じ書式設定):R:列を呼び出すときにタブ区切りファイルの欠損値を検出するread.tableの問題

x y z 
230.125 49.875 0 
230.375 49.875 0 
230.625 49.875 0 
261.125 49.875 0 
261.375 49.875 0 
251.625 48.875 4.38619211912155 
251.875 48.875 3.70883572995663 
252.125 48.875 3.2566264629364 
252.375 48.875 3.00820730924606 
254.125 48.875 7.88962166309357 
254.375 48.875 8.50787222385406 
254.625 48.875 8.95758244991303 
254.875 48.875 9.47213044166565 
255.125 48.875 9.96883320808411 
255.375 48.875 10.4400730609894 
255.625 48.875 10.6357674837112 
255.875 48.875 9.81607600450516 
274.125 48.875 0 
274.375 48.875 0 
274.625 48.875 0 
274.875 48.875 0 
275.125 48.875 0 
275.375 48.875 0 
275.625 48.875 0 
275.875 48.875 0 
276.125 48.875 0 

私は3番目の列を抽出し、以降で計算を行うには、別の行列にそれを追加しようとしています(これは、同じタイプの多くのファイルに対して実行されます)。だから私はここで初期化された2番目の行列を持っています。ここで

は私のコードです:

library(data.table) 
temp <- c() 
matrix_prelim <- matrix(nrow = 36000) 
temp <- as.matrix(read.table("/myfilepath/example.txt", sep="\t", fill = TRUE. na.strings = "", header=TRUE) 
matrix_prelim <- cbind(matrix_prelim, temp[[3]]) 

次に印刷:

head(matrix_prelim) 

利回り:

 [,1] [,2] 
[1,] NA 230.625 
[2,] NA 230.625 
[3,] NA 230.625 
[4,] NA 230.625 
[5,] NA 230.625 
[6,] NA 230.625 

私が希望することはありません内容の行列を初期化することを知っている(とき私には何の問題もありません):

 [,1]    [,2] 
[1,] NA    0 
[2,] NA    0 
[3,] NA    0 
[4,] NA    0 
[5,] NA    0 
[6,] NA 4.38619211912155 

私は何が間違っているのか全く分かりません。どんな助けでも大歓迎です。

ありがとうございました!

EDIT:na.strings引数を ""に変更しようとしましたが、na.strings引数を完全に取り出し、freadを使用して3番目の列を取得しようとしました。 )、ヘッダーを設定しようとしました= FALSE。

答えて

0

library(data.table)と呼んでも、実際にはデータをdata.table形式に変換していません。代わりに、データはdata.frameとして読み込まれる可能性があります。これは問題ありません。

3番目の列を別のベクトルとして保存するために行列を初期化する必要はありません。

temp <- as.matrix(read.table("/myfilepath/example.txt", sep="\t", fill = TRUE. na.strings = "", header=TRUE) 
matrix_prelim <- temp[3] 

このような場合は教えてください。

+0

チップをありがとう!残念ながら、上記のコードを使用すると動作しませんでした。実際には(matrix_prelimの頭部を印刷した後に)[1] 230.625しか返しませんでした。私はsubstrとカバリングを使って値を数値に分離しようとしています。 – SEHOCKETT

+0

実際には、データを読み込むときに 'as.matrix'を使わずにコードを試してみてください。 –

+0

解決済み!ありがとうございました! – SEHOCKETT

関連する問題