2015-02-07 63 views
2

我有測量甲基化的數據。使用t.test時出錯 - 沒有足夠的'x'觀察

數據:data.frame900觀測x 70患者[30 CTRL,40的情況下],所有的值都是numeric,沒有NA秒。

我使用下面的代碼:

group <- function(dFrame,toMatch) 
{ 
    matches <- unique (grep(paste(toMatch,collapse="|"), 
         colnames(dFrame), value=TRUE)) 
    return(dFrame[matches]) 
} 

pValue <- sapply(methySample, function(x) t.test(group (x,'case'),group (x,'ctrl'))$p.value) 


Error in t.test.default(group (x, "case"), group (x, "ctrl")) : 
    not enough 'x' observations 

我想P值是與每個觀測行一個條目的向量。

EDIT2:下面是一個例子 - 縮短了,但你應該得到的想法:

case_01  case_02  case_03  ctrl_01  ctrl_02 ... 
1 0.876729 0.8760000 0.8835130 0.8999369 0.8642505 
2 0.8270763 0.7983686 0.8092107 0.8610273 0.8475543 
3 0.2591350 0.2829770 0.2735919 0.2556579 0.2735417 
4 0.8181337 0.8007408 0.7808821 0.8097073 0.7511147 
5 0.6217151 0.6061754 0.5850365 0.6151368 0.5680856 
6 0.6943685 0.7605200 0.6855676 0.6687362 0.7320926 
... 

也許這裏有人可以幫我找出了問題 - 也許我缺少的東西在這裏很明顯。我已經看過其他文章考慮這個錯誤信息,但答案是'你的數據中是否有NAs?' '哦,是啊!' - 這不適用於我的問題。 謝謝!

+0

是'methySample'數據幀? – Jthorpe 2015-02-07 15:42:53

+0

yes:> class(methySample) [1]「data.frame」 – MineSweeper 2015-02-07 15:45:25

+2

然後sapply將提供的函數應用於每一列methly樣本,我懷疑這不是您想要的。甲基樣品的每一列是來自特定個體(病例或對照)的數據並且這些行是否是單個甲基化位點的所有觀察結果? – Jthorpe 2015-02-07 15:49:09

回答

4

我打算出去走一走,猜測你想對data.frame中的每一行應用t檢驗,並且這些字段標記爲'case1','control1'等。

methySample <- 
    data.frame(case1=rnorm(10), 
       case2=rnorm(10), 
       control1=rnorm(10), 
       control2=rnorm(10)) 

# identify the fields that are labeled 'case' and 'control' 
caseFields <- grep('case',colnames(methySample), value=TRUE) 
controlFields <- grep('control',colnames(methySample), value=TRUE) 

# apply the t-test for each row (margin = 1) 
apply(methySample, 
     1, 
     function(x) 
      t.test(x[caseFields], 
       x[controlFields])$p.value) 

如果您還是有問題,這段代碼就相當於,可能更容易調試:

pValue <- numeric(0) 
for(i in seq(nrow(methySample))) 
    pValue <- c(pValue, 
        t.test(methySample[i,caseFields], 
         methySample[i,controlFields])$p.value) 
+0

這幾乎是我準備放下的完全相同的代碼。我的部分太慢了。 – 2015-02-07 16:20:21

+0

是的,這是我想要的,它適用於你的例子 - 儘管我的數據仍然沒有足夠的'x'觀察值。儘管如此,只要我修正了我猜的數據,這就是正確的答案!謝謝兩個:) – MineSweeper 2015-02-07 16:25:15

+0

問題是我分開ctrl和case組的方式 - 它現在可以使用! – MineSweeper 2015-02-07 16:42:25

相關問題