0

我正在尝试使用 OHDSI:s 版本的SelfControlledCaseSeries包,它利用ff包来处理大数据。但是该ffwhich功能无法正常工作。ffwhich运行文档中提供的以下示例:

install.packages("ff")
install.packages("ffbase")
x <- ff::ff(10:1)
idx <- ffbase::ffwhich(x, x < 5)

给我

Error in if (by < 1) stop("'by' must be > 0") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In chunk.default(from = 1L, to = 5L, by = c(integer = 46116860184273880),  :
  NAs introduced by coercion to integer range

我尝试设置batchbytes更小的东西,在另一台计算机上运行脚本,还更改了 ff 文件的存储位置,但错误仍然存​​在。

options("ffbatchbytes"=  getOption("ffmaxbytes")/2)
options(fftempdir="C:/Users/OskarG/Desktop/ff_files")

有想法该怎么解决这个吗?

4

1 回答 1

1

包的git hub上报告了类似的错误。似乎是操作系统(Windows 10?)的问题。@jwijffels 在评论中提供了原因:

自己没有windows 10机器,但问题显然来自ff::chunk,即来自ff::chunk.ff_vector,其定义如下

相关部分是:b <- BATCHBYTES%/%RECORDBYTES。这个计算显然在你的机器上给出了 23058430092136940,原因超出了我的理解(假设你报告它适用于 Rgui 但不适用于 RStudio)。

您可以通过将选项 ffbatchbytes 更改为类似 options(ffbatchbytes = 84882227) 来解决这个问题 - 这是我在 oldskool windows 7 上的数字

我能够重现您的错误并使用上述建议进行更正:

library("ff")
library("ffbase")

options(ffbatchbytes = 84882227) #add this line in

x <- ff::ff(10:1)
idx <- ffwhich(x, x < 5)

x[idx][]

[1] 4 3 2 1 #output
于 2019-09-19T02:57:15.230 回答