'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
Другие вопросы по тегам