Как избежать вложенных циклов в R: Как создать новые переменные на основе сравнения двухсимвольных переменных без использования вложенных циклических функций?
Например, у меня есть две символьные переменные A и B:
A=c("yellow","orange","dog","dog","green","heaven","tree") #searchspace
B=c("dog","house","tree","yellow","dog","road","hell","rain","dog","tree") # target labels
Для каждого элемента в пространстве поиска (A) я хочу:
- подсчитать, сколько раз элемент присутствует в списке (B) и,
- если присутствует, в какой позиции он был впервые найден в списке B и,
- , если присутствует в нескольких позициях в B, какая позиция была последней в списке B.
- сохранить выходные данные(1), (2) и (3) в data.table, включая список A.
Вывод будет выглядеть примерно так:
A totcount firstindex lastindex
1: yellow 1 4 0
2: orange 0 0 0
3: dog 3 1 9
4: dog 3 1 9
5: green 0 0 0
6: heaven 0 0 0
7: tree 2 3 10
Я написалвложенная в функцию цикла, чтобы выполнить это, но это действительно медленно с списками A и B, имеющими более 16k и 2K элементов каждый, соответственно. Я изо всех сил пытался использовать функции применения, чтобы решить эту проблему.
Любые предложения будут высоко оценены. Спасибо