2016-05-26 6 views
7

Aktualnie czytam plik w pakiecie, korzystając z pakietu readr. Chodzi o to, aby użyć read_delim do czytania w wierszu dla wiersza, aby znaleźć maksymalne kolumny w moim nieustrukturyzowanym pliku danych. Kod podaje, że są problemy z parsing. Wiem o nich i zajmę się typem kolumny po imporcie. Czy istnieje sposób, aby wyłączyć problems() jak zwykle options(warn) nie działaPomiń problemy z analizą pamięci w r

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) 

wyjście do konsoli, że staram się tłumić jest następujący:

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

Mam wrażenie, że powinieneś poprawić plik przed R, zanim go zaimportujesz. Może awk lepiej nadaje się do tego zadania? – Tensibai

+0

'suppressWarnings (x <- readr :: parse_integer (c (" 1X "," bla "," 3 ")))) wydaje się działać ... – cory

+2

Prawdopodobnie lepiej otworzyć połączenie' file', przeczytaj plik a linia naraz i policzyć separatory? 'max (sapply (readLines (" file.txt "), function (x) {length (strsplit (x," \ t ") [[1]])}))' – Spacedman

Odpowiedz

13

W R można stłumić trzy Głównymi irytujących rzeczy podczas korzystania z pakietów:

  1. wiadomości suppressMessages(YOUR_FUNCTION)
  2. ostrzeżenia suppressWarnings(YOUR_FUNCTION)
  3. komunikaty startowe Pakiet suppressPackageStartupMessages(YOUR_FUNCTION)

Więc w twoim przypadku imho też niech deweloper pakiet wie więc, że on/ona może na przykład dodać verbose argumentu w funkcji.