Считывание ~ 5x10 ^ 6 числовых значений в R из текстового файла происходит на моем компьютере относительно медленно (несколько секунд, и я прочитал несколько таких файлов), даже с scan(..., what="numeric", nmax=5000)
или подобными приемами.Может быть стоит попробовать оболочку Rcpp
для такого рода задач (например, Armadillo
имеет несколько утилит для чтения текстовых файлов)?Или я бы, скорее всего, тратил свое время на незначительное повышение производительности из-за ожидаемых перегрузок интерфейса?Я не уверен, что в настоящее время ограничивает скорость (внутреннюю производительность компьютера или что-то еще?). Это задача, которую я обычно повторяю много раз в день, и формат файла всегда одинаков, 1000 столбцов, около 5000 строк.
Вот пример файла для воспроизведения, если это необходимо.
nr <- 5000
nc <- 1000
m <- matrix(round(rnorm(nr*nc),3),nr=nr)
cat(m[1, -1], "\n", file = "test.txt") # first line is shorter
write.table(m[-1, ], file = "test.txt", append=TRUE,
row.names = FALSE, col.names = FALSE)
Обновление : я пробовал read.csv.sql
, а также load("test.txt", arma::raw_ascii)
, используя Armadillo, и оба были медленнее, чемscan
решение.