Изменения

R:Оптимизация/Импорт данных

5 байтов добавлено, 10:19, 7 апреля 2014
м
Функция scan
{{r-code|code=<nowiki>data.frame(scan(tmp.csv, what = list(a = integer(0), b = integer(0), c = character(0), d = numeric(0), e = numeric(0), f = numeric(0)),
nmax = N, sep = ";", dec = ",", quote = "\"", multi.line = FALSE, skip = 1L, quiet = TRUE))</nowiki>}}
Поясним некоторые моменты:
Ниже приведены результаты сравнения работы функций <code>read.table()</code> и <code>scan()</code>:
{{r-code|code=<nowiki>> microbenchmark(defaults = read.tablecsv2(tmp.csv, sep = ";", header = TRUE),+ ompimize = read.tablecsv2(tmp.csv, sep = ";", header = TRUE, nrows = N, comment.char = "",
+ colClasses = c("integer", "integer", "factor", "numeric", "numeric", "numeric")),
+ scan = data.frame(scan(tmp.csv, nmax = N, sep = ";", dec = ",", quote = "\"", multi.line = FALSE, skip = 1L, quiet = TRUE,
+ what = list(a = integer(0), b = integer(0), c = character(0), d = numeric(0), e = numeric(0), f = numeric(0)))))
Unit: seconds
expr min lq median uq uq max neval defaults 3.948 4.037 726 7.121 48.109 4481 10.220 4729 11.757 719 100 ompimize 2.851 835 2.863 858 2.931 3871 2.005 898 3.686 261 100 scan 2.970 915 2.985 960 32.058 3971 2.653 993 3.822 413 100</nowiki>}}
Как видим, функций <code>scan()</code> работает быстрее <code>read.table()</code> с параметрами по умолчанию и может сравниться по скорости работы с <code>read.table()</code> с оптимизированными аргументами.