Сначала вам нужно загрузить списки в виде векторов.Предполагая, что каждая строка файла содержит один идентификатор гена:
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
.