2010-09-06 25 views
6

Bir yıl öncesine ait bu post buldum ve R version 2.11.1 (2010-05-31) kullanıyorum, ancak hala satır numaraları olmadan hata iletileri alıyorum.R komut satırı numaraları hatada mı?

Herhangi çözüm?

+0

Satır numaralarıyla hata iletileri alıyorum. Komut dosyalarınızı nasıl yüklüyorsunuz? – Shane

+0

@Shane Rscript kullanıyorum. Komut dosyalarınızı nasıl yüklüyorsunuz? –

+0

Windows GUI'den source() kullanıyorum. – Shane

cevap

6

Verilen cevaplar hala geçerli. Bir komut dosyasından satır numaralarını döndürmek bu kadar kolay değildir, ancak R, hatanın nerede bulunabileceği konusunda size çok daha fazla bilgi verebilir.

Örneğin, bir dosyaya bilgi tasarruf hata seçeneklerini kullanabilirsiniz:

options(error = quote({ 
    sink(file="error.txt"); 
    dump.frames(); 
    print(attr(last.dump,"error.message")); 
    traceback(); 
    sink(); 
    q()})) 

fonksiyon findLineNum() kullanılabilir bir yere kullanılabilir dosyasının adını varsa. Eğer hata mesajı varsa, böyle bir şey yapabileceğini: yaklaşan R 2.14 yılında

dump.frames() 
x <- attr(last.dump,"error.message") 
ll <- gsub("Error in (.*) : .*","\\1",x) 
lln <- findLineNum(srcfile,ll) 
+6

+1 Teşekkürler, bu henüz R'de varsayılan olarak uygulanmadığı için hayal kırıklığı yaratıyor. Bana çok arzu edilen bir özellik gibi geliyor. –

+0

Hata, R komut dosyasının en üst düzeyindeyse, bu yardımcı olmaz. –

0

, çekirdek ekibi bu özelliği uygulamadan yolunda ilerlediğinin. source(file=..., keep.file=TRUE) ile yüklenen komut dosyalarındaki işlevler, srcref özniteliğinde srcref özniteliği içerecektir; bu, işlevin tanımına karşılık gelen karakter aralığını, sınıfın nesnesi srcfilecopy nesnesi olarak saklanan bir bellek içi kopyasında tanımlar.

Bu, hemen satır düzeyinde hata ayıklama sağlamaz, ancak ellerinizi kirletmeye çalışıyorsanız yaklaşık satır numaraları almanızı sağlar. Ayrıca, bu ilerleme.