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]
}
}
}
解决方案
如果我们将向量放入数据框中,这很容易:
data = data.frame(primarySite, sitePMID)
deduplicated_data = unique(data)
您可以在 R-FAQ 中找到许多其他方法
推荐阅读
- matlab - 如何使用 ode23s 在 MATLAB 中使用 FOR 循环编写程序来调用微分方程 50 次?
- javascript - React Native Firebase 如何从具有特定用户的表数组中获取数据
- stored-procedures - 存储过程中的碧玉和时间戳转换
- microsoft-graph-api - 任一 SCP 角色声明都需要存在于令牌中
- coq - 我可以引入健全的构造函数等价吗?
- angular - Angular中(更改)事件的参数接口
- image - Flutter web Image.network 旋转图像
- svelte - Svelte:如何将数据从 javascript 文件传回 svelte 组件
- c# - 获取 X509Certificate 的私钥时,ASP.NET 网站有时会挂起或减慢请求
- excel - Excel VBA:使用 Omniture Adobe Report Builder 出错或成功