'fread' не совместим с пробелами в начале / конце?
Я пытаюсь прочитать текстовый файл, в котором столбцы разделены пробелом, в R. Я попытался использовать data.table, поскольку read.csv занимает много времени для чтения. Тем не менее, первый столбец имеет первые пробелы, и я получаю следующую ошибку в fread().
"Не правильно расположен после тестирования формата строки заголовка. Ch=' '"
Формат данных похож на,
45 36 46
45 67 35
Есть ли способ прочитать это с помощью fread() без переформатирования текстиля?
3 ответа
Решение
# This example reproduces the error
library(data.table)
in.df <- data.frame(A=c(" a1"," b2"," c3"," d4"), B=c(11,22,33,44),
stringsAsFactors=FALSE)
write.table(in.df, file="testing.dat", quote=FALSE, row.names=FALSE, col.names=FALSE)
test.df <- fread(input="testing.dat", sep=" ", header=FALSE, stringsAsFactors=FALSE,
verbose=TRUE)
# I can't find a solution in ?fread
Если вы находитесь под Linux, попробуйте fread("sed 's/^[[:blank:]]*//' testing.dat")
, sed
Команда удалит первые пробелы в каждой строке testing.dat
,
Это решение с использованием readLines
, но я не уверен насчет скорости.
require(data.table)
setwd("~")
in.df <- data.table(A = c(" a1"," b2"," c3"," d4"),
B = c(11,22,33,44))
in.df
write.table(in.df, file="testing.dat", quote = F,
row.names = F, col.names = F)
dat <- paste(sub("^\\s+", "", readLines("testing.dat")), collapse = "\n")
dat
test.df <- fread(dat, stringsAsFactors = F)
test.df