向量长度改变时如何遍历向量?

时间:2019-05-30 18:27:03

标签: r

我最初有两个长度相同的向量。这首先充满了蛋白质修饰位点“ E123”。第二个是用于参考该站点文献的唯一代码。我需要检查这些向量,才能从同一篇论文中删除对同一站点的多个引用。也就是说,如果VectorOne [1] == VectorOne [2] && VectorTwo [1] == VectorTwo [2],我需要删除重复项。问题是,当我使用for循环遍历数据时,可能会更改向量的长度,这意味着我正在使用的索引可能不再正确。

从向量中删除单个元素后,我循环到length(primarySite)的值太高,代码崩溃。

以下是这两个向量的前10个值的示例:

primarySite[1:10]
 [1] ""     ""     "D248" "E241" "E242" "E241" "E242" "D244" "D244" "E241"
sitePMID[1:10]
 [1] 24641686 24055347 23955771 23955771 23955771 23955771 23955771 23955771 23955771 23955771

Desired Output:
primarySite[1:6]
 [1] ""     ""     "D248" "E241" "E242" "D244" 
sitePMID[1:6]
 [1] 24641686 24055347 23955771 23955771 23955771 23955771 


for(i in 1:length(primarySite)){
      for(j in (i+1):length(primarySite)){
        if(primarySite[i] == primarySite[j] && sitePMID[i] ==      
sitePMID[j]){
      primarySite <- primarySite[-j]
      sitePMID <- sitePMID[-j]

    } 
  }
}

1 个答案:

答案 0 :(得分:0)

如果将向量放在数据框中,这很容易:

data = data.frame(primarySite, sitePMID)
deduplicated_data = unique(data)

您可以找到许多其他方式in the R-FAQ