簡體   English   中英

向量長度改變時如何遍歷向量?

[英]How to loop through vectors when the lengths of the vectors are changing?

我最初有兩個長度相同的向量。 這首先充滿了蛋白質修飾位點IE“ 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]

    } 
  }
}

如果將向量放在數據框中,這很容易:

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

您可以在R-FAQ中找到許多其他方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM