2011-04-20 32 views
33

Bir komut satırı kullanarak uyarıları() temizlemeyi istiyorum.R: tüm uyarıları temizleme

basari

> rm(last.warning, envir = baseenv()) 
Error in rm(last.warning, envir = baseenv()) : 
cannot remove variables from the base environment 

bir fikrin ile denediniz mi?

cevap

66

Kabul ediyorum assign("last.warning", NULL, envir = baseenv())

+1

Mükemmel olduğu için teşekkürler – RockScience

+1

Büyü gibi çalışır. – TMS

+4

Doğru yanıt olduğunu kabul ediyorum, ancak kullanıcıları böyle bir komut kullanmadan önce düşünmeye teşvik ediyorum. Bu tür kullanıcılar ne yapmaya çalışıyor? Altta yatan bir değişkeni değiştirmeden önce düşünün (orada C++ kullanıcıları için "özel" düşünün). Yeni bir R oturumu istiyorsanız, yeni bir R oturumu başlatın. Bunu ve rm'yi (list = ls()) kullanarak bir tane almazsınız. Bunun yerine, doğru olmayan ve adreslenmemesi gereken uyarıları kaldırmak isterseniz (bunun için _sure_?), Bunun yerine ilgili işlev üzerindeki suppressWarnings() öğesini kullanmayı düşünün. Aksi takdirde önemli uyarıları kaçırırsınız. – scottkosty

4

Uyarıların gösterilmesini durdurmak için suppressWarnings()'a bakın. help page for warnings yılında

Bildirim o söylüyor:

" .... last.warning kaydedildiği yere Bu belgelenmemiş ne de görülebilir ve bu değişime tabidir Bundan önce. R o çalışma alanında saklandı, ancak artık ...."

+7

Bill ikinci bağlantı R yardım sunucusu kendi döngü arabiriminde liman 22913 üzerinde çalışan yok herkes için işe yaramaz olduğunu. –

+1

Bu işleve baktım, ancak yine de bazen uyarı almak istiyorum. Sadece bir noktada yığını temizlemek istiyorum. – RockScience

+0

Bağlantılar şimdi düzeltildi. –

4

, ben wan deneyin 2.4.0 Bir try() kullanmak ve sadece bu try() tarafından üretilen uyarıları toplamak. Şimdilik

Çözümümün

assign("last.warning", NULL, envir = baseenv()) 
    myFit <- try(...) 
    warned <- warnings() 
assign("last.warning", NULL, envir = baseenv())