2016-05-26 10 views
7

Ich lese gerade in einer Datei mit dem Paket readr. Die Idee ist, read_delim zu verwenden, um Reihe für Reihe zu lesen, um die maximalen Spalten in meiner unstrukturierten Datendatei zu finden. Der Code gibt aus, dass es parsing Probleme gibt. Ich kenne das und werde nach dem Import mit dem Säulentyp umgehen. Gibt es eine Möglichkeit, die problems() als die übliche options(warn) auszuschalten ist nichtReader-Parse-Probleme in r unterdrücken

i=1 
max_col <- 0 
options(warn = -1) 
while(i != "stop") 
{ 
    n_col<- ncol(read_delim("file.txt", n_max = 1, skip = i, delim="\t")) 
    if(n_col > max_col) { 
    max_col <- n_col 
    print(max_col) 
    } 
    i <- i+1 
    if(n_col==0) i<-"stop" 
} 
options(warn = 0) 

Die Ausgabe an Konsole arbeiten, die ich versuche zu unterdrücken, ist folgendes:

.See problems(...) for more details. 
Warning: 11 parsing failures. 
row  col expected actual 
    1 1####4 valid date 1###8 
+0

Ich habe das Gefühl, Sie sollten die Datei aus R vor dem Importieren reparieren. Vielleicht ist awk besser für die Aufgabe geeignet? – Tensibai

+0

'suppressWarnings (x <- readr :: parse_integer (c (" 1X "," blah "," 3 "))) scheint zu funktionieren ... – cory

+2

Wahrscheinlich besser, um eine' Datei'-Verbindung zu öffnen, lesen Sie die Datei ein Linie auf einmal und zählen Sie die Separatoren? 'max (sapply (readLines (" file.txt "), funktion (x) {length (strsplit (x," \ t ") [[1]])})) – Spacedman

Antwort

13

In R Sie drei unterdrücken kann Haupt lästige Dinge bei der Verwendung von Paketen:

  1. Nachrichten suppressMessages(YOUR_FUNCTION)
  2. Warnungen suppressWarnings(YOUR_FUNCTION)
  3. Paket Startmeldungen suppressPackageStartupMessages(YOUR_FUNCTION)

So in Ihrem Fall imho auch das Paket Entwickler lassen weiß, so dass er/sie kann zum Beispiel ein verbose Argument in der Funktion hinzuzufügen.