我正在嘗試進行一些光譜分析,并旨在隔離彼此在 /-1 MZ 值內的光譜峰。我制作了一個 R 腳本,將我的所有光譜資訊與所有可能的肽組合到一個資料框中,但它是一個非常大的資料框,我正在嘗試找到一種簡化串聯峰查找的方法。我沒有使用 R 或任何編程語言的經驗,因此將不勝感激。
我嘗試創建一個列來查找相鄰行之間 MZ 值的差異,然后通過查找值僅為 1 的列進行過濾,但這會導致我錯過串聯光譜中的第一個/最后一個峰值。
這是我的資料框的一部分看起來像差異列的示例
mutate(diff = Mz_Round - lag(Mz_Round))
然后過濾為僅包含 diff == 1 的位置。
precursorMz Mz_Round HW Intensity Reg Intensity diff
136 256.6814 251.15 2108 2305 NA
137 256.6814 255.18 6491 3910 NA
138 256.6814 255.68 2292 1114 NA
139 256.6814 260.20 43010 23230 NA
140 256.6814 261.20 9452 6388 1
141 256.6814 262.19 6440 3487 NA
對于這個特定的示例,我想提取第 139 行和第 140 行,因為它們都在 1 mz 單位內,但如果我只過濾哪些行的 diff 值為 1,則第 139 行將丟失。
uj5u.com熱心網友回復:
data <-
data.frame(
Mz_Round = c(
251.15,
255.18,
255.68,
260.20,
261.20,
262.19
)
)
data |>
dplyr::mutate(
diff_1 = Mz_Round - dplyr::lag(Mz_Round),
diff_2 = dplyr::lead(Mz_Round) - Mz_Round
) |>
dplyr::filter(
diff_1 == 1 | diff_2 == 1
)
#> Mz_Round diff_1 diff_2
#> 1 260.2 4.52 1.00
#> 2 261.2 1.00 0.99
使用reprex v2.0.2創建于 2022-11-08
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529910.html
標籤:r
