p.adjust error: 'oderVector1' - PullRequest
       8

p.adjust error: 'oderVector1'

1 голос
/ 04 марта 2011

У меня проблема с функцией 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 Ответ

2 голосов
/ 04 марта 2011

Ваша проблема в том, что ваш список содержит 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...