2013-03-29 20 views
0

問題是,有些時候我的數據沒有數字大於或等於5且小於80,或者有些時候我只有一個觀察,所以我可以' t執行t.test。我如何在循環中使用if語句,以便如果它沒有得到5到80之間的任何值或者只有一個觀察值,那麼它只使用NA並且不執行t.test?R程序的固定代碼..另一個如果循環

+0

請提供一個樣本數據集和此集合的所需輸出。這樣做可以讓撰稿人快速驗證結果並比較解決方案。 –

+0

你的問題是空的數據框的長度不是零。測試'NROW(。)<2'。 –

回答

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 
}) 
2

德文是正確的。 R中的類型和長度並不總是按照您期望的數據框的方式工作。您應該可以使用nrowNROW來獲得「長度」。如果一切都失敗了,你可以使用try,但這總是讓我覺得很骯髒。

要知道肯定,但請按照馬修的要求提供一個例子。