修复R程序的代码..另一个if循环

时间:2013-03-29 16:23:52

标签: r if-statement

问题在于,有时我的数据没有大于或等于5且小于80的数字,或者有时我只有一个观察因此我无法执行t.test。如何在循环中使用if语句,这样如果它没有得到5到80之间的任何值或只有一个观察值,它只使用NA并且不执行t.test?

2 个答案:

答案 0 :(得分:2)

DWin是正确的。 R中的类型重要,长度并不总是按照您对数据帧的预期方式工作。您应该可以使用nrowNROW来获取“长度”。如果所有其他方法都失败了,你可以使用try,但这总会让我觉得很脏。

尽管如此,请务必按照马修的要求提供一个例子。

答案 1 :(得分:1)

你可以在lapply里放一个像这样的“try”块。将结果初始化为NA,如果没有遇到任何错误,它只会分配t.test结果。

data2 <- lapply(1:length(m), function(i) {
         res = NA
         try({ 
             #you can put your other constraints here
             if(length(m[[i]][[5]]) > 1) {
                 res = t.test(data1$Value,m[[i]][[5]])
             }
         }, silent=T)
         res
 })