2016-09-01 18 views
10

Hata ayıklama amacıyla konsola (veya çıktı penceresine) yazdırmaya çalışıyorum. Örneğin:Knitr kullanırken konsola nasıl yazdırabilirim?

\documentclass{article} 

\begin{document} 

<<foo>>= 
print(getwd()) 
message(getwd()) 
message("ERROR:") 
cat(getwd(), file=stderr()) 
not_a_command() # Does not throw an error? 
stop("Why doesn't this throw an error?") 
@ 


\end{document} 

ben çıkış PDF sonuç almak, ama benim sorunum ben tamamladıktan olmayan bir senaryomuz var olan (yani orada kontrol etmek hiçbir çıkış PDF) ve nedenini anlamaya çalışıyorum . Örme, başarılı bir şekilde tamamlanmazsa, günlük dosyası çıkışı yok gibi görünüyor.

Ben knitr 1.13 ve Rstudio 0.99.896 kullanıyorum.

DÜZENLEME: Yukarıdaki kod, Sweave'ye değiştirdiğimde doğru şekilde çıkacaktır (ve kesilecektir), bu da bana bir knitr sorunu olduğunu düşündürür.

+0

Bu yararlı bir çözümdür, teşekkürler @CL. ! – bwk

+1

Kodu bir kerede bir kerede veya aynı anda bir satırda çalıştırabilirsiniz. RStudio kullandığınız için, mevcut yığın, sonraki yığın ve tüm yığınları çalıştırmak için kısayol tuşları (Code> Run Region) bulunmaktadır. – Gregor

cevap

5

Bu sorunun birçok yönü vardır - ve kısmen de XY problem. (Ben o okumak gibi) özünde, soru şudur:

nasıl knitr başarısız olur ve bir çıktı dosyası üretmek değilse sorunun ne görebilirim? Hata oluştuktan sonra PDF çıkışı durumunda

  • , oldukça sık çıkış PDF derleme başarısız olur ama ara TEX dosyası hala var. Bu dosyayı açmak hata mesajlarını ortaya çıkarabilir.
  • As suggested by Gregor, kod satırındaki satırları konsolda (veya yığın olarak) çalıştırabilirsiniz. Ancak, bu, özellikle de çalışma dizini veya çevre ile ilişkiliyse, tüm sorunları yeniden üretemeyebilir. Hata ayıklama bilgilerini harici bir dosyaya yazdırmak için
  • capture.output kullanılabilir. Nihayet
  • (benim yorumuna aksine), bu RStudio ilerleme penceresinin (veya bununla denir) yazdırmak mümkün geçerli: kanca den ilerleme penceresinde üzerine basılacak iletiler. Temel olarak, mesaj knitr kodundan değil, knitr'dan gelmelidir.

nasıl RStudio ilerleme penceresindeki hata ayıklama bilgilerini yazdırabilirsiniz?

Aşağıdaki örnek debug = TRUE her yığın sonra ortamdaki tüm nesneleri yazdırır: Daha fazla veya belgeler için, Tabii

Progress window

:

\documentclass{article} 

\begin{document} 

<<>>= 
knitr::knit_hooks$set(debug = function(before, options, envir) { 
    if (!before) { 
    message(
     paste(names(envir), as.list(envir), 
      sep = " = ", collapse = "\n")) 
    } 
}) 
@ 

<<debug = TRUE>>= 
a <- 5 
foo <- "bar" 
@ 

\end{document} 

ilerleme penceresi okur Daha büyük nesneler kanca, nesnelerin seçici olarak basılmasına (parçaları) göre ayarlanmalıdır.