这个错误是什么意思 "Error in if (any(B < 1)) stop("B too small")" while using tabplot package

What is the meaning of this error "Error in if (any(B < 1)) stop("B too small")" while using tabplot package

我找到了用于可视化大型数据库的 tabplot 包。我 运行 它使用下面的代码但是我在不同的数据帧上得到这个错误:

"Error in if (any(B < 1)) stop("B too small") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In bbatch(n, as.integer(BATCHBYTES/theobytes)) : NAs introduced by coercion"

这是一个例子:

dat <- read.table(text = " birds    wolfs     snakes
                     3        9         7
                     3        8         4
                     1        2         8
                     1        2         3
                     1        8         3
                     6        1         2
                     6        7         1
                     6        1         5
                     5        9         7
                     3        8         7
                     4        2         7
                     1        2         3
                     7        6         3
                     6        1         1
                     6        3         9
                     6        1         1   ",header = TRUE)
install.packages("tabplot")
package ‘ff’ successfully unpacked and MD5 sums checked
package ‘bit’ successfully unpacked and MD5 sums checked
package ‘fastmatch’ successfully unpacked and MD5 sums checked
package ‘ffbase’ successfully unpacked and MD5 sums checked
package ‘tabplot’ successfully unpacked and MD5 sums checked
library("tabplot", lib.loc="~/R/win-library/3.1")
 tab <- tableplot(dat, plot = FALSE) ## The tabplot  command
Error in if (any(B < 1)) stop("B too small") : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In bbatch(n, as.integer(BATCHBYTES/theobytes)) : NAs introduced by coercion

知道如何解决这个问题吗?

UPDATE - 我用了另一台电脑,它可以工作 fine.Both 电脑是 Windows 64 位,但在我让它工作的电脑上OS 是 Win7 专业版,在出现错误的计算机上 OS 是 WIN SERVER 2013

问题出在命令bbatch(n, as.integer(BATCHBYTES/theobytes))上。无论您在做什么,都会导致在需要整数时引入 NAs。 any(NA < 1) 给出 NA。这会导致 if() 命令无法确定您的值是 TRUE 还是 FALSE:

if ( NA ) stop("This is silly")
#  Error in if (NA) stop("This is silly") : 
#    missing value where TRUE/FALSE needed

我的猜测(在这个阶段这是一个完全的猜测,没有进一步测试)是尝试将 stringsAsFactors=FALSE 添加到您的 read.table() 命令。

根据 schuemie 的评论,此错误与 ffdfdlpy 所需的内存量有关,可以通过每个会话 运行

options(ffmaxbytes = min(getOption("ffmaxbytes"),.Machine$integer.max * 12))

将允许这个工作。

我可以确认这适用于 sessionInfo():

R version 3.2.4 (2016-03-10) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1