Назначить новый идентификатор с учетом предыдущих изменений - PullRequest
0 голосов
/ 07 февраля 2019

Извините, я не знаю, как правильно озаглавить мой вопрос.Это легче понять на примере.

Пример данных
Рассмотрим следующий пример.

> l_ids=as.data.frame(cbind(a=c("strong","intense","intensity"),
id=c("1","2","3"),new_id=c("","1","2")),stringsAsFactors = FALSE)

               a id new_id
    1     strong  1       
    2    intense  2      1
    3   intensity 3      2

Я хотел бы обновить id каждого слова в a с помощью new_id, если это применимо.Рассмотрим это как словарь синонимов.Когда я перебираю new_id;

> for (i in 1:nrow(l_ids)){
+   if (nchar(l_ids$new_id[i])>0){
+     l_ids$id[i]=l_ids$new_id[i]
+   }
+ }
> l_ids
           a id new_id
1     strong  1       
2    intense  1      1
3  intensity  2      2

Проблема в том, что я хотел бы, чтобы intensity также получил 1.Есть ли способ сделать это без необходимости повторять несколько раз?

Обновление на фоне

У меня есть документ, в котором у меня есть список синонимов.Это синонимы, относящиеся только к сфере применения проблемы.Пример:

> dictionary
     good       bad
1  strong   intense
2 intense intensity
3   light      soft

Затем мне дается список слов, каждое с заданным id.Моя задача - проверить, есть ли какое-либо из этих слов в столбце bad dictionary, и, если это так, обновить его, указав id слова слева от него.Как видно, для intensity потребуется два шага, чтобы стать strong (слово good в словаре).Есть ли способ сделать это без необходимости делать несколько итераций?(скажем, for петля)

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