在Rmd文件中出现"long vectors not supported yet"错误,但在R脚本中没有。

74

我正在使用 R 3.1 和 RStudio 0.99 操作矩阵。

我有我的 R Script,使用 cmd+enter 没有问题。

我创建了一个用于报告的 Rmd,但是出现了这个错误。

Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress,  : 
  long vectors not supported yet: ../../../../R-3.3.1/src/main/connections.c:5600
Calls: <Anonymous> ... <Anonymous> -> <Anonymous> -> lazyLoadDBinsertVariable
Execution halted

有没有绕过这个错误的方法?

这似乎是R中的大矩阵:长向量尚不支持重复

但不同的是,只有在尝试创建Rmd时才会发生这种情况。


你正在处理多少个观测值? - Chirayu Chamoli
可能是在R中的大矩阵:长向量尚未支持的重复问题。 - Martin Schmelzer
1
它是一个28630x50247的矩阵,但错误只在Rmd中出现。 - pachadotdev
3
请看这个链接:https://github.com/yihui/knitr/issues/572。 - Martin Schmelzer
2个回答

106
我今天也遇到了这个问题,通过在我的.Rmd文件中的设置块中使用cache.lazy = FALSE来解决它。
因此,我R Markdown文件中第一个块的内容如下:
library(knitr)
knitr::opts_chunk$set(cache = TRUE, warning = FALSE, 
                      message = FALSE, cache.lazy = FALSE)

这是正确的答案。我只想补充一下,出于某种原因,我不得不从options而不是opts_chunk$set中访问它。所以我有options(cache = TRUE, warning = FALSE, message = FALSE, cache.lazy = FALSE)。如果这有任何区别,我使用的是RStudio 3.2.2。 - Nicholas Hassan
如果您正在缓存一个非常大的 R 对象,那么这可能会出现问题。这就是我的问题所在。 - Bastien
在R 3.5.1上,使用knitr::opts_chunk$set的原始答案对我有效。 - Carmen Sandoval
3
为了获取更多背景信息,请阅读 https://bookdown.org/yihui/rmarkdown-cookbook/cache-lazy.html。为了实现懒惰缓存,R Markdown提供了一个knitr选项,称为cache。启用此选项后,代码块的输出将被缓存,并在下一次重新运行相同代码块时重用,而无需再次执行代码块。这可以显著减少文档编译时间。但是,在某些情况下可能需要手动清除缓存。 - MartineJ

9

当我尝试把.rmd文件转换为PDF格式时,出现了相同的错误提示。

有没有什么办法可以绕过这个错误?

删除 'cache = TRUE' 或将其设置为 FALSE 似乎可以解决这个问题。


2
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - etienne
嗨。我之前没有缓存。现在我已经缓存了,但是无论是否缓存都会出现这个问题。已经有一个可能的解决方案被评论了。 - pachadotdev
1
感谢@etienne的澄清。我不明白为什么我的回答会受到负评,因为我提供的解决方案确实解决了我的脚本问题。 - D-Lorenz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接