Я загадываю проблему. Ваши гены являются факторами, и когда вы используете их для подмножества матрицы, они преобразуются в цифры c:
genes = c('EPHX1','HSPB1', 'CLU', 'GAMT','PICK1', 'NR3C1','SIRT1', 'NPAS2',
'SPRY4', 'MAP3K1', 'SOS1', 'SALL4','GRIP1', 'PUM2', 'SOX9', 'RIPK4', 'CHD7',
'BCOR','CCNB1','NFE2L2', 'CHD2', 'CYP1B1', 'MDM2', 'CREBBP', 'ICK', 'ZFY',
'SIN3A', 'GATA4')
class(genes)
[1] "character"
infertility = data.frame(V1=genes)
vector_infertility_genes <- infertility$V1
class(vector_infertility_genes)
[1] "factor"
По умолчанию в data.frame в качестве вектора входят символы, теперь ниже я делаю матрицу с некоторыми случайными именами генов и вставьте выбранные гены из 101-128:
my_genomic_matrix = matrix(runif(1000*3),ncol=3)
rownames(my_genomic_matrix) = paste0("gene",1:1000)
rownames(my_genomic_matrix)[101:128] = genes
Это дает вам некоторую странную вещь:
head(my_genomic_matrix[vector_infertility_genes,])
[,1] [,2] [,3]
gene8 0.6705400 0.92836211 0.39245031
gene12 0.6550523 0.87094037 0.08309788
gene5 0.3737798 0.94779178 0.44279510
gene9 0.4544450 0.77939541 0.13901245
gene19 0.6284895 0.47871950 0.60837784
gene18 0.2369957 0.01336282 0.10390174
Это должно работать в большинстве случаев, если вы уверены, что ваши vector_infertility_genes находятся в именах строк my_genomic_matrix:
head(my_genomic_matrix[as.character(vector_infertility_genes),])
[,1] [,2] [,3]
EPHX1 0.1380852 0.91638593 0.5155086
HSPB1 0.4828377 0.44798223 0.6011990
CLU 0.7974677 0.84083760 0.4378384
GAMT 0.9654133 0.04167125 0.6087020
PICK1 0.1958134 0.22254847 0.5157768
NR3C1 0.4228220 0.14512706 0.6136789
Если некоторые из них отсутствуют, вы также можете сделать:
vector_infertility_genes = as.character(vector_infertility_genes)
my_genomic_matrix[rownames(my_genomic_matrix) %in% vector_infertility_genes,]