基本示例不适用于ffbase-package中的ffwhich

时间:2019-09-18 11:58:53

标签: r ff ffbase

我正在尝试使用SelfControlledCaseSeries包的OHDSI版本:该版本利用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")

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

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

  

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

     

相关的部分是:b <-BATCHBYTES%/%RECORDBYTES。显然,您计算机上的此计算得出23058430092136940的原因超出了我的理解(假设您报告说它可以在Rgui上运行,而不能在RStudio上运行。)

     

您可以通过将ffbatchbytes选项更改为该选项(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