我正在使用fread
中最近推出的data.table
函数来读取数据文件。
当我将代码包装到knitr(Rmd)文档中时,我注意到一些奇怪的输出,即:
##
0%
即使verbose
的{{1}}选项设置为FALSE。我已经使用fread
来隐藏此输出,但我想向包作者报告确切的问题。这是一个最小的例子,
sink
什么是0%输出?
答案 0 :(得分:15)
这是一个%进度计数器。对我来说,打印0%,5%,10%,... 95%,100%(例如),最后一个\r
,使其显示在{{1}调用下方的一行上在提示符下键入时。
但是当从函数,批处理和编织器调用时,这是不可取的。这已被删除。来自NEWS for v1.8.9(rev 851):
- %进度控制台计量表已被删除。在批处理模式,日志文件和不处理
fread
的报告中,输出很不方便。要检测\r
的位置太难了,而且,通过在C for循环中保存代码,删除它会加快fread
的速度(这就是为什么它不是可选的) 。使用操作系统的系统监视器确认fread正在进行中。感谢Baptiste强调:
Strange output from fread when called from knitr
快速提醒完整性。从fread
的顶部开始:
此功能仍在开发中 。例如,读取日期 作为角色(他们可以使用优秀的 快速包或标准基本功能)和嵌入式引号(“\”“ 和“”“”)有问题。还有其他已知问题没有 已修复,功能尚未实施。但是,你可能会发现它 在许多情况下都有效。请向datatable-help或Stack报告问题 溢出的data.table标记。
尚未用于生产 。不是因为它在某种意义上是不稳定的 它崩溃或有缺陷(你的测试将显示它是否是 在你的情况下是否稳定)但是因为fread的论点和 行为很可能在未来发生变化;即,我们期望 (希望是次要的)非向后兼容的变化。为什么会这样 然后发布到CRAN?因为要求维护版本 CRAN维护人员遵守R-devel中新的更严格的测试,以及a 很少的Bioconductor包依赖于data.table和Bioconductor 要求包传递R-devel检查。离开的速度更快 畏惧并写下这些段落,而不是畏缩。
答案 1 :(得分:12)
报告不是问题。
如Matthew Dowle所述,这是来自fread
您可以设置results = 'hide'
以避免包含这些结果
library(knitr)
test = "```{r, results = 'hide'}
require(data.table)
fread('1 2 3\n')
```"
knit2html(text=test, output="test.html")
browseURL("test.html")
看,没有进度条。
在实际层面上,我认为让results = 'hide'
甚至include = FALSE
为这样的步骤是明智的。
您不希望在步骤中重复此类读取,实际上,您只想一次读取数据,然后将序列化(使用save
,saveRDS
或类似) ,所以你可以在下次使用它(这会更快)。
根据评论
进行编辑我会将处理分成几个较小的块。然后,您可以不在块中包含读取,但包括未评估的虚拟版本(因此您可以查看代码,但不包括结果)
```{r libraries}
require(data.table)
```
```{r loaddata, include = FALSE}
DT <- fread('yourfile')
```
```{r loaddummy, ref.label = 'loaddata', eval = FALSE, echo = TRUE}
```
```{r dostuff}
# doing other stuff
```
答案 2 :(得分:0)
showProgress
中有一个名为fread
的参数,如果将其设置为FALSE
,则您将看不到进度输出。 (它有助于降价。)