p.adjust错误:'oderVector1'

时间:2011-03-04 10:23:51

标签: r

我遇到了函数p.adjust的问题。我有一个包含741个p值的列表,我想使用p.adjust()函数来纠正多个测试(FDR测试)。这就是我到目前为止所做的:

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

但是我收到以下错误

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

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分: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()中的名称,因此可以加速该版本的替代方案是:

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