Мой код похож на this .
Учитывая матрицу как это:
a b c d
a 1 NA 3 4
b NA 2 NA 4
c NA NA NA NA
d NA NA NA 4
Преобразует это в:
a a 1
a c 3
a d 4
b b 2
b d 4
d d 4
Соответствующий код указан ниже:
2 pears <- read.delim("pears.txt", header = TRUE, sep = "\t", dec = ".")
3 edges <- NULL
4 for (i in 1:nrow(pears)) {
5 for (j in 1:ncol(pears)) {
6 if (!(is.na(pears[i,j]))) {
7 edges <- rbind(edges, c(rownames(pears)[i], colnames(pears)[j], pears[i,j]))
8 }
9 }
10 print(i)
11 }
12 colnames(edges) <- c("gene1", "gene2", "PCC")
13 write.table(edges, "edges.txt", row.names = FALSE, quote = FALSE, sep = "\t")
Когда я запускаю код с удаленного сервера в фоновом режиме, используя screen -S
в разреженной (99% NA) матрице 17804x17804, он первоначально выполняет 5 операторов печати каждые 13 секунд. Тем не менее, теперь она замедлилась до 7 печатных выражений каждую минуту. Почему алгоритм становится все медленнее и медленнее? Есть ли другой способ быстрее конвертировать мою матрицу в формат Cytoscape?