2010-06-28 35 views
8

Tôi đang viết một số ghi chú R với Sweave và muốn hiển thị các lỗi phổ biến. Ví dụ:Hiển thị lỗi với sweave

<<echo=TRUE, eval=TRUE>>= 
x = 5 
#Case matters! 
x*X 
@ 

Tuy nhiên khi xoay, tài liệu sẽ không biên dịch do lỗi R. Có cách nào để thực hiện biên dịch sweave và hiển thị (độc đáo hình thành) lỗi?

Trả lời

5

Như Shane cho thấy, sử dụng

<<echo=TRUE,eval=FALSE>> 

cho mã mà sẽ báo lỗi, nhưng bạn muốn hiển thị, và sau đó một lần nữa với

<<echo=FALSE,eval=TRUE,results=verbatim>> 

nhưng với cùng một mã được bao bọc trong một lần thử.

Có một ví dụ ở đây: http://tolstoy.newcastle.edu.au/R/help/05/09/11690.html

2

Vượt qua lỗi của bạn trong lệnh try(). Sau đó, nó sẽ tiếp tục chạy:

> {print(1); try(x*X); print(2)} 
[1] 1 
Error in try(x * X) : object 'X' not found 
[1] 2 
+0

Tôi nghĩ về điều đó, nhưng muốn tránh hiển thị 'try' – csgillespie

+1

Suy nghĩ khác của tôi là có thể có một tùy chọn (error = some.function) có thể hoạt động, nhưng tôi không thể tìm thấy bất cứ điều gì. Bạn có thể gọi mỗi đoạn mã hai lần: một lần với một thử và echo = FALSE nhưng eval = TRUE và nắm bắt thông báo lỗi. Sau đó, một lần mà không cần thử và các thiết lập đảo ngược. Sau đó, chỉ cần in ra thông báo lỗi một cách riêng biệt. – Shane

8

Đây là một vấn đề không với knitr, các "thế hệ tiếp theo Sweave", nếu tôi có thể nói như vậy. Nó hiển thị lỗi và cảnh báo theo mặc định, khó hoặc không thể trong Sweave, cùng với rất nhiều tính năng đẹp khác (như tô màu cú pháp, tích hợp PGF và hoạt ảnh cốt truyện, để bắt đầu). Nó cũng được phát triển và duy trì tích cực.

Sweave mã phải được chuyển đổi khi sử dụng chức năng Sweave2knitr do cùng một gói cung cấp.

Các vấn đề liên quan