Ich suche nach einem Allzweck-Algorithmus, um kurze numerische Reihen aus Listen mit einer maximalen Länge von ein paar hundert Zahlen zu identifizieren. Dies wird verwendet, um Massenreihen von Massenspektrometriedaten (ms1) zu identifizieren.Gibt es einen allgemeinen Algorithmus, um eine numerische Reihe zu identifizieren?
Zum Beispiel angesichts der folgenden Liste, würde ich identifizieren möchte, dass drei dieser Zahlen passen die Reihe N + 1, N + 2, usw.
426.24 <= N
427.24 <= N + 1/x
371.10
428.24 <= N + 2/x
851.47
451.16
Die Serie sind alle das Format: N, N + 1/x, N + 2/x, N + 3/x, N + 4/x usw., wobei x eine ganze Zahl ist (im Beispiel x = 1). Ich denke, diese Einschränkung macht das Problem sehr handhabbar. Irgendwelche Vorschläge für einen schnellen/effizienten Weg, dies in R zu lösen?
Ich glaube nicht, dass dies eine Frage ist. Wenn Sie einen Algorithmus haben und wissen möchten, wie Sie effizient in R implementieren können, dann wäre es sinnvoll. Wie auch immer, kennst du N? Sie können N von allen Werten subtrahieren. Auch ist nicht klar, was ist die Voraussetzung? –
N kann empirisch als die erste Nummer der Reihe bestimmt werden. N von allen Werten zu subtrahieren und dann nach doppelten Werten zu suchen, ist eigentlich eine ziemlich gute Lösung. –
In diesem Beispiel wäre es ziemlich offensichtlich, wenn Sie "diff (sort (x))" betrachtet hätten. Aber das würde nicht so gut funktionieren, wenn andere Werte mit den Serienwerten überlappen würden. – Gregor