2014-09-28 8 views
6

Jak mogę dołączyć dane wyjściowe tablicy lub ramki danych do komunikatu, ostrzeżenia lub błędu?W jaki sposób uwzględniasz wyjście ramki danych wewnątrz ostrzeżeń i błędów?

Domyślnie dane wyjściowe są zwinięte przez deparse dla każdej kolumny, co nie jest użyteczne. Oto przykład, używając zestawu danych cars.

message(cars) 
## c(4, 4, 7, 7, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 20, 20, 20, 20, 20, 22, 23, 24, 24, 24, 24, 25)c(2, 10, 4, 22, 16, 10, 18, 26, 34, 17, 28, 14, 20, 24, 28, 26, 34, 34, 46, 26, 36, 60, 80, 20, 26, 54, 32, 40, 32, 40, 50, 42, 56, 76, 84, 36, 46, 68, 32, 48, 52, 56, 64, 66, 54, 70, 92, 93, 120, 85) 

Odpowiedz

8

Drukuj wyjście, odzyskanie go przy capture.output i zwinąć w jeden ciąg oddzielone znakami nowej linii.

print_and_capture <- function(x) 
{ 
    paste(capture.output(print(x)), collapse = "\n") 
} 

message(print_and_capture(cars)) 
## speed dist 
## 1  4 2 
## 2  4 10 
## # etc. 

stop("An error was found in the cars dataset:\n", print_and_capture(cars)) 
## Error: An error was found in the cars dataset: 
## speed dist 
## 1  4 2 
## 2  4 10 
## # etc.