ffbase::as.character 中的 "by" 参数有什么作用?

What does the "by" argument in ffbase::as.character do?

在下面的post中,

aggregation using ffdfdply function in R

有这样一行

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

出于好奇,我想知道 by 参数是什么意思。它似乎与 ff 数据框有关,但我不确定。 Google as.characteras.vector 的搜索和 R 文档没有提供有用的信息。

我尝试了一些示例,但下面的代码给出了相同的结果。

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)

如果有人能告诉我它是什么,我将不胜感激。提前谢谢你。

首先,那个函数是 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 参数是做什么的。

由于 as.character.ff 在内部使用默认值 as.character 工作,并且鉴于 df 向量可能比 RAM 大,数据需要分块处理。 chunk 函数促进了块的划分。在这种情况下,相关方法是 chunk.ff_vector。默认情况下,这将通过将 getOption("ffbatchbytes") 除以记录大小来计算块大小。但是,可以通过使用 by 提供块大小来覆盖此行为。

在您给出的示例中,ff 向量将一次转换为 character 250000 个成员。

任何 by 或根本没有 by 的最终结果都是相同的。较大的值将导致更多的 RAM 临时使用,但可能会更快地运行。