У меня есть матрица, извлеченная с помощью R, которая имеет много значений NA (значения, не найденные в тексте для извлечения)
И у меня есть справочный CSV-файл, который содержит все возможности комбинирования одних и тех же данных
это часть моей матрицы
матрица данных;
OMIM GENES_SYMBOL GENES CHROMOSOME
1 (NA) (arlts1) (perforin) (NA)
2 (NA) (mtr) (NA) (NA)
3 (325410) (NA) (NA) (NA)
4 (NA) (t341c) (NA) (5)
так выглядит матрица csv
словарная матрица;
OMIM GENES_SYMBOL GENES CHROMOSOME
"612367" "alpqtl2" anorexia nervosa,a 1" 1
"606788" "arlts1" basal cell carcinoma, susceptibility to, 3
"325410" "bcc1" bone mineral density qtl 3 10
Я хочу сопоставить первую матрицу со второй, чтобы заполнить все эквивалентные значения и избавиться от NA
. проблема в том, что матрицы имеют разную длину ( the second >>>>> the first)
, а строки в обеих не организованы одинаково; 1-й ряд data matrix
может быть номером 500 строки в dictionary matrix
Я написал этот код, но он работал только тогда, когда 2 матрицы имели одинаковую длину. Если нет, он возвращает только 2 столбца из data matrix
genemap<- data.table::fread("GeneMap - Copy.csv",sep="\t")
fun <- function(rowi,genemap) {
res <- apply(as.data.frame(genemap),1,function(x) {length(na.omit(match(na.omit(rowi),x)))})
IND <- which( max(datamatrix) == datamatrixs )[1]
rowi[is.na(rowi)] <- unlist(genemap[IND,])[is.na(rowi)]
return(rowi)
}
as.data.frame(t(apply(datamatrix, 1, fun, genemap))
)
OMIM GENES_SYMBOL
1 (NA) (arlts1)
2 (NA) (mtr)
3 (325410) (NA)
4 (NA) ( t341c)
есть предложения изменить код ??