Как я могу оптимизировать мой код R без использования циклов? - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в R и написал следующий фрагмент кода, чтобы копировать части из одной таблицы в другую в соответствии с условием, и это работает, но когда я пробую это с очень большими файлами, это работает очень медленно и занимает много времени до конца sh, как я могу оптимизировать код, возможно, использовать что-то еще, что заменяет использование циклов? например:

data1B :

#id    sample_id 
 1         NA
 2         NA
 3         NA
data2:
 #sample_id   #clone_id   
  300            8
  301            3
  302            1 
  400            7
  500            2
output data1B:
#id         #sample_id
 1             302
 2             500
 3             301



  for (i in 1:nrow(data1B)){
    for (j in 1:nrow(data2)){
     if (data1B$id[i] == data2$clone_id[j]){
      data1B$sample_id[i] <- data2$sample_id[j]
     }
   }
  }

1 Ответ

0 голосов
/ 31 марта 2020
outer(1:nrow(data1B),1:nrow(data2),function(i,j){
  ifelse(data1B$id[i] == data2$clone_id[j], data2$sample_id[j], data1B$sample_id[i])
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...