我遇到了函数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'
任何人都可以帮我吗?
答案 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