2011-03-04 34 views
1

我遇到功能問題p.adjust。我有一個包含741個p值的列表,我想使用p.adjust()函數來糾正多個測試(FDR測試)。這是我到目前爲止有:p.adjust錯誤:'oderVector1'

> x <- as.vector(pvalues1) 
> p.adjust(x, method="fdr" n=length(x)) 

但我得到以下錯誤

Error in order (p, decreasing = TRUE) : 
    unimplemented type 'list' in 'orderVector1' 

誰能幫助我?

回答

2

你的問題是你的列表包含p值已經是一個向量。你想要的是一個數字矢量。名單只是一般向量:

> l <- list(A = runif(1), B = runif(1)) 
> l 
$A 
[1] 0.7053136 

$B 
[1] 0.7053284 

> as.vector(l) 
$A 
[1] 0.7053136 

$B 
[1] 0.7053284 

> is.vector(l) 
[1] TRUE 

一種選擇是unlist()列表中,產生數值向量:

> unlist(l) 
     A   B 
0.7053136 0.7053284 

的的好處是它保留了名字。另一種是普通的舊as.numeric(),其失去的名字,但在其他方面一樣unlist()

> as.numeric(l) 
[1] 0.7053136 0.7053284 

對於大的載體,你可能不希望在unlist()使用的名稱,因此一個替代方案,將加速該版本up:

> unlist(l, use.names = FALSE) 
[1] 0.7053136 0.7053284 
+0

這正是我想要的!非常感謝! – Lisanne 2011-03-04 11:08:18