R 当向量的长度发生变化时,如何循环向量?
我最初有两个长度相同的向量。第一个是蛋白质修饰位点,即“E123”。第二个是本网站参考文献的唯一代码。我需要遍历这些向量,从同一篇论文中删除对同一站点的多个引用。也就是说,如果VectorOne[1]==VectorOne[2]&&vectorwo[1]==vectorwo[2],我需要删除重复项。问题是当我使用for循环遍历数据时,我可能会改变向量的长度,这意味着我使用的索引可能不再正确 一旦我从向量中删除了一个元素,我循环到长度(primarySite)的值就太高,代码崩溃 以下是这两个向量的前10个值的示例:R 当向量的长度发生变化时,如何循环向量?,r,R,我最初有两个长度相同的向量。第一个是蛋白质修饰位点,即“E123”。第二个是本网站参考文献的唯一代码。我需要遍历这些向量,从同一篇论文中删除对同一站点的多个引用。也就是说,如果VectorOne[1]==VectorOne[2]&&vectorwo[1]==vectorwo[2],我需要删除重复项。问题是当我使用for循环遍历数据时,我可能会改变向量的长度,这意味着我使用的索引可能不再正确 一旦我从向量中删除了一个元素,我循环到长度(primarySite)的值就太高,代码崩溃 以下是这两个向量
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]
}
}
}
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
期望输出:
主要站点[1:6]
[1] “D248”E241“E242”D244
sitePMID[1:6]
[1] 24641686 24055347 23955771 23955771 23955771 23955771
适用于(i/1:长度(主要场地)){
对于(j in(i+1):长度(原生矿)){
if(primarySite[i]==primarySite[j]&sitePMID[i]=
sitePMID[j]){
primarySite如果我们将向量放在数据帧中,这很容易:
data = data.frame(primarySite, sitePMID)
deduplicated_data = unique(data)
您可以找到许多其他方法如果我们将向量放在数据帧中,这很容易:
data = data.frame(primarySite, sitePMID)
deduplicated_data = unique(data)
你可以找到很多其他方法为什么其他
而无需做任何事情?是的,你是对的,这是不必要的。有很多更好的方法可以做到这一点。你甚至不需要循环(更不用说2!)。如果您为primarySite和SitepId提供示例数据,则会更容易提供帮助。如果您为这10个元素添加所需的输出,则会有所帮助。您希望删除所有重复项还是仅删除连续重复项?为什么不做任何事?是的,您是对的,这是不必要的。有许多更好的方法可以做到这一点。您很可能不想这样做甚至不需要循环(更不用说2!)。如果为primarySite和sitePMID提供示例数据,会更容易提供帮助。如果为这10个元素添加所需的输出,则会有所帮助。是否要删除所有重复项或仅连续重复项?