0

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

4

2 回答 2

2

DWin 是正确的。类型在 R 中很重要,长度并不总是按照您对数据帧的期望方式工作。您应该能够使用nrowNROW获得“长度”。如果一切都失败了,你可以使用try,但这总是让我觉得很脏。

但是,要确定,请提供 Matthew 要求的示例。

于 2013-03-29T18:38:14.387 回答
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
 })
于 2013-03-29T16:35:35.483 回答