Что делает аргумент "by" в ffbase::as.character?

В посте ниже

агрегация с использованием функции ffdfdply в R

Есть такая линия.

splitby <- as.character(data$Date, by = 250000)

Просто из любопытства интересно, что by аргумент означает. Кажется, это связано с ff датафрейм, но я не уверен. Google поиск и R документация as.character а также as.vector не предоставил полезной информации.

Я попробовал несколько примеров, но коды ниже дают те же результаты.

d <- seq.Date(Sys.Date(), Sys.Date()+10000, by = "day")
as.character(d, by=1)
as.character(d, by=10)
as.character(d, by=100)

Если бы кто-нибудь мог сказать мне, что это, я был бы признателен. Заранее спасибо.

2 ответа

Решение

Поскольку as.character.ff работает с использованием по умолчанию as.character внутренне, и ввиду того, что векторы df могут быть больше, чем RAM, данные должны обрабатываться порциями. Разделение на куски облегчается chunk функция. В этом случае соответствующий метод chunk.ff_vector, По умолчанию это вычислит размер куска путем деления getOption("ffbatchbytes") по размеру записи. Однако это поведение можно изменить, указав размер чанка с помощью by,

В приведенном вами примере вектор ff будет преобразован в character 250000 участников одновременно.

Конечный результат будет одинаковым для любого by или без by совсем. Большие значения приведут к большему временному использованию ОЗУ, но потенциально более быстрой работе.

Во-первых, эта функция ffbase::as.characterне совсем старый base::as.character

См. http://www.inside-r.org/packages/cran/ffbase/docs/as.character.ff где написано

as.character((x, ...))

Arguments:
x: a ff vector
...: other parameters passed on to chunk

Итак by аргумент передается некоторым chunk функция. Затем вам нужно выяснить, какой пакет chunk функция используется. Тип ?chunk, скажите нам, какой, а затем прочитайте его документ, чтобы увидеть, что его by аргумент делает.

Другие вопросы по тегам