Спасибо, Нико!Почти попал туда после того, как исправил мелкие ошибки.Здесь я прилагаю свой сценарий:
datamatrix=read.table("ref.txt",sep="\t",header=T,row.names=1)
correl <- NULL
for (i in 1:nrow(datamatrix)) {
correl <- apply(datamatrix, 1, function(x){cor(t(datamatrix[,i]))})
write.table(correl, paste(row.names(datamatrix)[i], ".txt", sep=""))
}
Но я боюсь, что часть функции (x) имеет проблемы, которая выглядит как t(datamatrix[i,j])
, которая будет вычислять corr любых двух строк.
На самом деле мне нужно перебрать матрицу.сначала cor(row01, row02)
получить одну корреляцию между rwo01 и row02;затем cor(row01, row03)
, чтобы получить корреляцию между row01 и rwo03, .... и до корреляции между row01 row30000. Теперь я получил первый столбец для
row01
Row01 **1.000**
Row02 0.012
Row03 0.023
Row04 0.820
Row05 0.165
Row06 0.230
Row07 0.376
Row08 0.870
и сохранил его в файл row01.txt;
Аналогичным образом получите
Row02
Row01 0.012
Row02 **1.000**
Row03 0.023
Row04 0.820
Row05 0.165
Row06 0.230
Row07 0.376
Row08 0.870
и сохраните его в файле row02.txt.
Всего я получу 30000 файлов.Это глупо, но это может пропустить ограничение памяти и может быть легко обработано для корреляции определенной строки.