问题是有时我的数据没有大于或等于 5 且小于 80 的数字,或者有时我只有一个观察结果,所以我无法执行 t.test。如何在循环中使用 if 语句,以便如果它没有得到 5 到 80 之间的任何值或只有一个观察值,它只使用NA
而不执行 t.test?
问问题
68 次
2 回答
2
DWin 是正确的。类型在 R 中很重要,长度并不总是按照您对数据帧的期望方式工作。您应该能够使用nrow
或NROW
获得“长度”。如果一切都失败了,你可以使用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 回答