【发布时间】:2013-08-05 15:52:07
【问题描述】:
我正在尝试在 R 中构建一个相当复杂的循环。
我有一组数据集作为一个名为p_int 的对象(p_int 是峰值强度)。
对于这个例子,p_int 即str(p_int) 的结构是:
num [1:1599]
p_int 的大小可以变化,例如 [1:688]、[1:1200] 等。
我试图用p_int 做的是构建一个复杂的循环来提取单同位素峰,这些峰具有某些特征,将被提取到第二个对象中:mono_iso:
- 在
p_int中搜索前八组数据结果。在这八个中,找到得分最高的数据集(这个得分也需要在 50 以上)。 - 找到此结果后,将其记录到
mono_iso。 - 然后循环将固定到该结果在大型数据集中的这个位置。从这个位置开始,它将跳过数据集中的下一个结果,然后对下一组 8 个结果执行相同操作。
类似这样的:
16 Results: 100 120 90 66 220 90 70 30 70 100 54 85 310 200 33 41
** 因此,首先,循环将获取前 8 个结果:
100 120 90 66 220 90 70 30
**然后它会决定哪个峰值最大:
220
**判断220是否大于50
IF YES: It would record 220 into "mono_iso"
IF NO: It would move on to the next set of 8 results
**220大于50...所以记录到mono_iso
然后循环将其位置置于 220,然后跳过“90”并再次开始下一组 8 个结果,从下一个数据结果开始:在本例中为 70:
70 30 70 100 54 85 310 200
然后它将记录“310”值(最高值)并再次执行相同的操作等,直到数据集结束。
希望这是完全合理的。如果有人可以帮助我使用 R-script 制作这样的循环,我将非常感激。
【问题讨论】:
-
为什么要跳过 90?如果峰值是 8 个批次中的最后一个观测值,会发生什么?你确定它不应该继续“70 100 54 ...”吗?在我下面的回答中,我假设您想独立处理每个批次。
-
我的第一个想法是为此使用
while循环(这意味着它会很慢,可能应该使用 Rcpp 实现)。
标签: r loops for-loop nested-loops