2010-12-05 20 views
8

Şu anda okulda çok sayıda muhtemel koşuya sahip (1400 ya da daha fazla) bir proje için ANOVA çalışıyorum, ancak bazılarında ANOVA'yı R'de çalıştıramıyorum. Tüm ANOVA'ları çalıştırmak için bir komut dosyası yazdım, ancak Bazıları çalışmaz ve Rout dosyası bana hatası verir contrasts<- (*tmp*, value = "contr.treatment"): Kontrastlar sadece 2 veya daha fazla seviyeli faktörlere uygulanabilir Aramalar: aov ... model. matrix -> model.matrix.default -> tezatlıklar < - Yürütme durdurulduYürütmeyi durdurmak yerine hata mesajlarını aldıktan sonra R komut dosyasının devam etmesinin bir yolu var mı?

R'ye rağmen, betiği yazmaya devam edecek betiği yazmanın herhangi bir yolu var mı?

Benim tüm komut, diğer ardından dosya yükleme, bağlama, bir lavabo oluşturarak, kütüphane yükleme, vb

ss107927468.model<-aov(Race.5~ss107927468, data=snp1) 
summary(ss107927468.model) 

Herhangi bir yardım

mutluluk duyacağız ... olduğunu.

+0

Bugün bazı yeni cevaplar. Http://stackoverflow.com/a/14612524/403310 ("parse (" file.R ")' veya http: // sonucundaki her ifadede loop ('' (eval (...)) 'yi kullanın. stackoverflow.com/a/14613363/403310 (değerlendirme paketi) –

cevap

8

try() numaralı işleve ve yardım sayfasına bakın (?try). R ifadenizi bir try() çağrısında sarın ve başarılı olursa, sonuçta ortaya çıkan nesne, bu durumda, takılan modeli içerir. Başarısız olursa, "try-error" sınıfına sahip bir nesne döndürülür. Bu, hangi modellerin çalışıp çalışmadığını kolayca kontrol etmenizi sağlar.

Sen plyr paketinde failwith kullanmak modeli ya da sadece bir başarısızlık mesajında, ör .:

ss107927468.model <- try(aov(Race.5~ss107927468, data=snp1)) 
if(isTRUE(all.equal(class(ss107927468.model), "try-error"))) { 
    writeLines("Model failed") 
} else { 
    summary(ss107927468.model) 
} 
+0

Hızlı güncelleme: 2013-02-12 itibariyle, başarısız olan bir try try nesnesinin "try-error" olduğu gözüküyor. –

+0

@Fr. Bunun için teşekkürler. Bunun değiştiğini düşünmüyorum ve belki de bunu 'tryCatch() 'ile karıştırıyordum. Neyse, sorunu işaret ettiğin için teşekkürler. –

+0

' try() 'az ya da çok sunuldu tryCatch için daha basit bir sarmalayıcı olarak, aynı nesne olmalıdır. Ama aslında değil: 'x <- dene (dur (e))', 'try-error' sınıfının bir nesnesini döndürür, ve' x <- tryCatch (dur (e), error = function (e) e) 'c (" simpleError "," error "," condition ") sınıfının bir nesnesini döndürür. açıkçası :) –

1

Try() için yardım sayfasından bağlanan try() ve kuzenler işlevleri, bir hata durumunu test etmenize, bir hata günlüğüne yazma (veya hiçbir şey yapmama) gibi uygun eylemi gerçekleştirmenize ve incelikle ilerlemenize olanak tanır. .

4

için özet yazdırmak için karar vermek testleri yapabilirsiniz. Bunu, llply ile birlikte kullanabilir ve işlevinizi etrafına sarabilirsiniz.

+0

Evet - bu şekilde genellikle bu problemlere de yaklaşırım. [Plyr öğretici] (http://had.co.nz/plyr/plyr-intro-090510.pdf) 'faithwith' kullanarak birkaç güzel örneğe sahiptir. – Chase

İlgili konular