Как определить перекрытие между несколькими наборами генов, используя матрицу перекрытия / функцию пересечения - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть восемь разных .txt файлов, содержащих длинные списки имен генов.Я хотел бы сформулировать некоторый код на RStudio, который будет смотреть на совпадение между ними.Кто-нибудь знает, какая функция поможет?Я попытался использовать функцию intersect (), но понял, что она работает только при сравнении двух векторов.

Любая помощь будет принята с благодарностью.enter image description here

Screenshot of the current code

Кто-нибудь знает, почему по-прежнему появляется сообщение об ошибке?

1 Ответ

0 голосов
/ 23 ноября 2018

Сначала вам нужно загрузить списки в виде векторов.Предполагая, что каждая строка файла содержит один идентификатор гена:

genevect1 <- scan("file1.txt", what=character(), sep="\n")
genevect2 <- scan("file2.txt", what=character(), sep="\n")

Тогда вы можете:

inter1vs2 <- intersect(genevect1, genevect2)

, если вы хотите пересечь следующие генные векторы:

inter1vs2vs3 <- intersect(inter1vs2, genevect3)

[РЕДАКТИРОВАТЬ]

Для просмотра ваших файлов:

filelist <- list(data.file1, data.file2, data.file3, etc)  # CHANGE "etc"
# "Lapply" is basically making a "for loop".
all_gene_vectors <- lapply(filelist, scan, what=character(), sep="\n")

# Then make the intersection of *all* genesets (if that's what you want).
final_inter <- all_gene_vectors[[1]]
for (next_genevect in all_gene_vectors[2:length(all_gene_vectors)]) {
    final_inter <- intersect(final_inter, next_genevect)
}

# Or compute all pairwise intersections (untested)
pairwise_inters <- list()
# Iterate over all possible pairs i,j (i ≠ j)
N <- length(all_gene_vectors)
for (i in 1:(N-1)) {
    ith_inters <- list()
    for (j in (i+1):N) {
        ith_inters[[ names(all_gene_vectors)[j] ]] <- intersect(all_gene_vectors[[i]], all_gene_vectors[[j]])
    }
    pairwise_inters[[ names(all_gene_vectors)[i] ]] <- ith_inters
}

PS

Я использовал функцию scan для чтения ваших данных, так как это общий подход для простого чтения строк из файла.Если вы предпочитаете и подходит для ваших данных, вы можете использовать read.table:

genedata1 <- read.table("file1.txt", header=FALSE, row.names=NULL, quote="", as.is=TRUE)

, а затем получить доступ к «векторному» объекту (столбцу) с помощью genedata$V1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...