这个错误是什么意思 "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))
上。无论您在做什么,都会导致在需要整数时引入 NA
s。 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
我找到了用于可视化大型数据库的 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))
上。无论您在做什么,都会导致在需要整数时引入 NA
s。 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