2015-05-04 8 views
5

Ich habe das tabplot-Paket zur Visualisierung einer großen Datenbank gefunden. Ich lief es mit dem Code unten, aber ich erhalte diese Störung auf verschiedenen Datenrahmen:Was bedeutet dieser Fehler? Fehler in if (any (B <1)) stop ("B zu klein") "bei Verwendung des tabplot-Pakets

"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" 

Hier ist ein Beispiel:

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 

Jede Idee, wie dieses Problem zu überwinden?

UPDATE - habe ich einen anderen Computer und es funktioniert fine.Both Computer sind auf Windows 64-Bit, aber auf dem Computer, ich habe es das Betriebssystem zu arbeiten, ist Win7 Pro und auf dem Computer, der den Fehler hat das OS ist WIN SERVER 2013

+0

ich nur eine Warnung (v 1.1.). Welche Version des Pakets verwenden Sie? –

+0

Die Version ist 1.1 – mql4beginner

+0

An diesem Punkt, denke ich, werden wir ein reproduzierbares Beispiel benötigen. Kann jemand den Fehler bestätigen? –

Antwort

2

Nach einem Kommentar von schuemie, hat dieser Fehler mit der Größe des Speichers durch ffdfdlpy, zu tun mußte und mit einem Sitzungs-Laufe diesen zur Arbeit festgelegt werden kann

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

erlaubt .

kann ich bestätigen, das funktioniert mit 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

1

Das Problem liegt in dem Befehl bbatch(n, as.integer(BATCHBYTES/theobytes)). Was auch immer Sie tun, verursacht NA s eingeführt werden, wenn Integer erwartet werden. Und any(NA < 1) gibt NA. Dies hat den Effekt, dass der if() Befehl nicht entscheiden können, ob Ihr Wert TRUE oder FALSE:

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

Meine Vermutung (und es ist eine völlige Vermutung zu diesem Zeitpunkt ohne weitere Prüfung) ist das Hinzufügen stringsAsFactors=FALSE zu Ihrem read.table() zu versuchen, Befehl.

+0

StringsAsFactors hinzufügen = FALSE hat nicht geholfen ... Alle Variablen sind vom Typ int. – mql4beginner

+0

@ mql4beginner 'In bbatch (n, as.integer (BATCHBYTES/theobytes)): NAs, die durch Nötigung eingeführt wurden, sagt mir, dass etwas, irgendwo, nicht von" ganzzahlig "oder" numerisch "ist. Ich schlage vor, genau zu schauen, was "BATCHBYTES" und "Theobytes" sind. –

+0

Ich habe gelesen, dass BATCHBYTES und theobytes mit dem Paket 'ffdfdply' verwandt werden, das von 'tabplot' Paket verwendet wird, aber ich sehe nicht, wie ich sie ändern kann – mql4beginner