2016-01-30 2 views
0

Я запускаю функцию cor.matrix, которая рассчитала корреляцию между строками в матрице. Строки, которые вы хотите скорректировать, определяются по style=. Пожалуйста, смотрите более подробно здесь: http://www.inside-r.org/packages/cran/rsgcc/docs/cor.matrixопределить функцию для последовательных пар строк

Два примера функции:

Calcuate корреляции по парам между 1-й, 2-й и 3-й строке в матрице «х»:

cor.matrix(x, cpus = 1, 
       cormethod = "GCC", style = "pairs.between", 
       var1.id = c(1:3), var2.id = c(1:3), 
       pernum = 2000, sigmethod = "two.sided", 
       output = "matrix") 

calcuate корреляция на соседних строках ((G1, G2), (G2, G3), (G3, G4), ...) в GEMatrix «x».

cor.matrix(x, cpus = 1, 
       cormethod = "GCC", style = "adjacent.pairs", 
       pernum = 2000, sigmethod = "two.sided", 
       output = "matrix") 

Однако, я хочу, чтобы вычислить корреляцию между строкой 1 и 2, строки 3 и 4, строки 5 и 6 и так далее, до конца матрицы. , Нужно ли мне писать какой-то цикл, чтобы сделать это, или я могу использовать команду rep?

ответ

0

Возможно, это не будет выглядеть слишком «сдвинутым», хотя это на самом деле один:

sapply(seq(1, nrow(x)-1, by=2), function(n) cor(x[n,], x[n+1,])) 

Но, может быть, вы хотели, чтобы cor.matrix методы, которые будут использоваться, и, глядя на странице помощи заставляет меня думать, что ваш запрос может легко быть удовлетворены:

var1.id 
    a numeric vector specifying the row numbers of genes. 
var2.id 
    a numeric vector specifying the row numbers of genes. Suppose the var1.id and var2.id 
    are respectively c(1,2) and c(3,6), then the the correlation of gene pairs (G1,G3) and 
    (G2,G6) will be calcuated. For styles of "pairs.between" and "one.pair", this parameter 
    MUST be pre-defined. For the other styles, this parameter can be automatically defined 
    by the program itself. 

Так что, возможно именно это:

cor.matrix(x, cpus = 1, 
       cormethod = "GCC", style = "pairs.between", 
       var1.id = seq(1, nrow(x)-1, by=2), var2.id = seq(2, nrow(x), by=2), 
       pernum = 2000, sigmethod = "two.sided", 
       output = "matrix") 

Я получаю ту же ошибку, что и в комментарии ниже, после того, как не удалось установить полный пакет с его грязными атрибутами GUI, но добился успеха в поиске rsgcc.R и загрузке файлов rnaseq.rda из источника пакета. Я не понимаю, почему тест действительность как она есть (и я думаю, что это ошибка), но этот код успешно:

cor.matrix(x, cpus = 1, 
       cormethod = "GCC", style = "adjacent.pairs", 
    #var1.id = seq(1, nrow(x)-1, by=2), var2.id = seq(2, nrow(x), by=2), 
    # Same results with and without that line 
       pernum = 2000, sigmethod = "two.sided", 
       output = "matrix") 
$corMatrix 
       GRMZM2G164785 GRMZM2G070322 AC199961.4_FG001 
GRMZM2G162702 -0.8875649  0.0000000  0.0000000 
GRMZM2G164785  0.0000000 -0.6789225  0.0000000 
GRMZM2G070322  0.0000000  0.0000000  0.5846958 

$pvalueMatrix 
       GRMZM2G164785 GRMZM2G070322 AC199961.4_FG001 
GRMZM2G162702   0.029   NA    NA 
GRMZM2G164785   NA   0.147    NA 
GRMZM2G070322   NA   NA   0.257 

Я понимаю, что это не может быть именно то, что вы хотели. Я также не думаю, что терминологически точно назвать эту «корреляцию».

+0

> cor.matrix (mat, cpus = 1, + cormethod = "GCC", style = "pairs.between", + var1.id = seq (1, nrow (mat) -1, by = 2), var2.id = seq (2, nrow (mat), by = 2), + pernum = 2000, sigmethod = "two.sided", + output = "matrix") Ошибка в cor.matrix (мат , cpus = 1, cormethod = "GCC", style = "pairs.between",: Ошибка: var1.id должен быть таким же с var2.id для пар. между стилями – user2300940

+0

Я думаю, что ваш последний пример сравнивает 1-2 , 2-3, 3-4 и т. Д. Это очень требовательный процессор, когда у меня есть матрица из 2000 строк. Моя матрица оргиназирована так, что я хочу сравнить 1-2, 3-4, 4-5 и т. Д. ... Спасибо, в любом случае! – user2300940

+0

Как я и думал, я сказал .... кажется, есть ошибка. Функция не ведет себя в мужчине документально подтвержден. Не моя вина. –

Смежные вопросы