首页 > 解决方案 > 考虑到以前的更改分配新 ID

问题描述

抱歉,我不知道如何正确命名我的问题。举个例子更容易理解。

示例数据
考虑以下示例。

> 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单词。将其视为同义词词典。当我迭代时;anew_idnew_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需要两个步骤才能成为stronggood字典中的一个词)。有没有办法做到这一点而不必进行多次迭代?(比如说,一个for循环)

标签: rdataframe

解决方案


推荐阅读