Спасибо, Нико! Почти попал туда после того, как исправил мелкие ошибки. Здесь я прилагаю свой сценарий:
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=""))
}
Но я боюсь, что проблема в части function(x)
, которая, кажется, равна t(datamatrix[i,j])
, которая вычислит корр из любых двух строк.
На самом деле мне нужно перебрать матрицу. сначала 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 файлов. Это глупо, но это может пропустить ограничение памяти и может быть легко обработано для корреляции определенной строки.