2014-03-31 50 views
0

我有一組患者得分如:噸檢驗通過迭代中的R

P1 <- c(7.81,6.93,7.11) 
P2 <- c(8.61,7.95,8.11) 
P3 <- c(8.41,7.65,7.01) 
....etc 

我有一個大組健康人的分數,如:

HC <- c(5.22,4.87,6.93,5.27,6.01,4.55,.....etc) 

我列出了病人的姓名在向量:

patients <- c('P1','P2','P3',....etc) 

我試圖進行t檢驗每對healt的患者得分的hy對照組。我已經寫:

for (i in patients){t.test(patients[i],HC)} 

我期待R鍵打印的t檢驗到控制檯負荷的結果,但它告訴我:

Error in t.test.default(patients[i], HC) : 
not enough 'x' observations 
In addition: Warning message: 
In mean.default(x) : argument is not numeric or logical: returning NA 

我只需要得到一些P值在數據上,並認爲這可能是一個簡單的語法問題,但與R無關,並且似乎無法找到快速答案。任何幫助將是偉大的?

回答

1

使用list包含實際的載體,而不是向量的名字patients

> patients <- list(P1, P2, P3) 
> for (i in patients){print(t.test(i,HC)$p.value)} 
[1] 0.005015573 
[1] 0.0002672035 
[1] 0.00899473 
+0

完美,謝謝! – user3062260

0

試試這個:for (i in patients){t.test(get(i),HC)}

的問題是,i通過你的病人矢量循環並返回一個字符。 R不知道如何處理字符'P1'get告訴R在環境中尋找名爲'P1'的對象。

+0

這似乎並不爲我工作,我得到:錯誤GET(我):第一無效論點 – user3062260