首页 > 解决方案 > 当向量的长度发生变化时如何遍历向量?

问题描述

我最初有两个相同长度的向量。这第一个充满了蛋白质修饰位点即“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]

    } 
  }
}

标签: r

解决方案


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

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

您可以在 R-FAQ 中找到许多其他方法


推荐阅读