Мне нужна помощь от таких экспертов, как вы, с проблемой, которая слишком велика для моих навыков R.
У меня есть вектор и data.frame:
vec = c("v1;v2","v3","v4","v5;v6")
vecNames = c("v1","v2","v3","v4","v5","v6")
vecNames
## [1] "v1" "v2" "v3" "v4" "v5" "v6"
vecDescription = c("descr1","descr2","descr3","descr4","descr5","descr6")
vecDescription
## [1] "descr1" "descr2" "descr3" "descr4" "descr5" "descr6"
df = data.frame(vecNames, vecDescription)
df
vecNames vecDescription
1 v1 descr1
2 v2 descr2
3 v3 descr3
4 v4 descr4
5 v5 descr5
6 v6 descr6
Для аннотации используется data.frame.
mapping = df$vecDescription[match(vec, df$vecNames)]
Вывод будет таким, как ожидалось:
as.vector(mapping)
## [1] NA "descr3" "descr4" NA
Но я хочу:
## [1] "descr1;descr2" "descr3" "descr4" "descr5;descr6"
Я был успешным, используя for-loop, но этот подход ужасно медленный, когда применяется к линиям 500k.