R: проблема с read.table, обнаруживающим отсутствующие значения в файле с разделителями табуляцией при вызове столбцов.

Я пытаюсь сделать что-то очень простое и провожу с этим чертовски много времени. У меня есть набор данных, который хранится в файле с разделителями табуляции. В этом файле с разделителями табуляцией отсутствуют значения. Когда я пытаюсь вызвать столбец со значениями, разделенными табуляцией, вызывается неправильный столбец. Я считаю, что это связано с тем, что первое значение после строки заголовка в третьем столбце (тот, который я пытаюсь извлечь) — это столбец с отсутствующим значением. Вот пример моих данных (мои фактические данные составляют 36000 строк, но все отформатированы одинаково):

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

Я пытаюсь извлечь третий столбец и добавить его в другую матрицу для выполнения расчетов позже (это будет сделано для многих файлов одного типа). Вот почему у меня здесь инициализирована вторая матрица.

Вот мой код:

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

когда я хотел бы (зная, что инициализация матрицы без содержимого даст мне столбец NA, что не проблема):

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

Я совершенно не понимаю, что я делаю неправильно. Любая помощь приветствуется.

Спасибо!

РЕДАКТИРОВАТЬ: я должен отметить, что я попытался изменить аргумент na.strings на " ", полностью исключив аргумент na.strings, попытался использовать fread и захватить третий столбец (это просто не сработало) и попытался установка заголовков = FALSE.


person SEHOCKETT    schedule 25.04.2016    source источник


Ответы (1)


Хотя вы вызвали library(data.table), на самом деле вы не конвертируете свои данные в формат data.table. Вместо этого ваши данные, скорее всего, считываются как data.frame, и это нормально.

Нет необходимости инициализировать матрицу для хранения третьего столбца в виде отдельного вектора. Попробуйте что-то вроде этого:

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

Дайте мне знать, если это работает.

person Gaurav Bansal    schedule 25.04.2016
comment
Спасибо за совет! К сожалению, использование приведенного выше кода не сработало. На самом деле он вернул только (после печати заголовка matrix_prelim) [1] 230,625 и никаких других строк. Я попытаюсь разделить значения с помощью substr и преобразовать их в числовые. - person SEHOCKETT; 25.04.2016
comment
На самом деле, попробуйте код без as.matrix при чтении данных. - person Gaurav Bansal; 25.04.2016