R: проблема с read.table, обнаруживающая пропущенные значения в файле с разделителями табуляции при вызове столбцов
Я пытаюсь сделать что-то очень простое и провожу время с этим. У меня есть набор данных, который хранится в файле с разделителями табуляции. В этом файле с разделителями табуляции отсутствуют значения. Когда я пытаюсь вызвать столбец со значениями, разделенными табуляцией, вызывается неправильный столбец. Я считаю, что это потому, что первое значение после строки заголовка в третьем столбце (тот, который я пытаюсь извлечь) является столбцом с отсутствующим vlaue. Вот пример моих данных (мои фактические данные - 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 и захватить третий столбец (который просто не работал вообще), и попытался установка заголовков = ЛОЖЬ.
1 ответ
Хотя ты звонил 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]
Дайте мне знать, если это работает.