У меня есть фрейм данных (df), который мне нужно аннотировать:
![locations I need to annotate](https://i.stack.imgur.com/Gy9wH.png)
Столбцы местоположения содержат координату, которая должна находиться внутри гена, который нужно аннотировать.Это означает, что столбцы хромосом должны совпадать, и координата> начальная позиция гена и координата <конечная позиция гена. </p>
У меня также есть список возможных генов (gen): ![genes I want to use](https://i.stack.imgur.com/TsUdg.png)
Я хочу добавить еще один столбец в df: df $ Gene, который содержит имя гена.Несколько генов могут быть аннотированы в одном месте.У меня это работает очень медленно, но я теряюсь над тем, как сделать это быстрее.Кто-нибудь есть советы о том, как утвердить скорость аннотации?
genes <- list()
for(del_id in 1:nrow(df)) {
gen_id <- which(gen$Chromosome == df[del_id,]$Chromosome & gen$Start <= df[del_id,]$location & gen$End >= df[del_id,]$location)
genes[[del_id]] <- gen[gen_id, ]$Gene
}
df$Gene <- sapply(genes, function( x ) { ifelse( any( is.na(x) ), NA, paste( x, collapse = ',' ) ) } )