Что делает аргумент "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
аргумент делает.