3482
правки
Изменения
м
→Функция scan
В данном выводе хорошо видно, что 90% времени затрачено на чтение файла с помощью функции <code>scan()</code>. Мы задались вопросом: а возможно ли получить требуемый результат, пользуясь только функцией и <code>scan()</code> и приведёт ли это к увеличению производительности. После некоторых экспериментов нам подобрать команду, приводящую к нужному результату:
{{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 = ";", quote = "\"", multi.line = FALSE, skip = 1L, quiet = TRUE))</nowiki>}} Поясним некоторые моменты: * <code>skip = 1L</code>: пропускаем первую строку, т.к. она содержит названия столбцов и при её обработка функция <code>scan()</code> выдаст ошибку;* <code>what = list(a = integer(0), b = integer(0), c = character(0), d = numeric(0), e = numeric(0), f = numeric(0))</code>; аналог аргумента <code>colClasses</code> для <code>read.table()</code>;* <code>nmax = N</code>: аналог <code>nrows</code> для <code>read.table()</code>.
Ниже приведены результаты сравнения работы функций <code>read.table()</code> и <code>scan()</code>: