отобразить содержимое матрицы из другой матрицы R, которая не имеет такую ​​же длину - PullRequest
0 голосов
/ 27 августа 2018

У меня есть матрица, извлеченная с помощью 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)    

есть предложения изменить код ??

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